php에서 함수를 사용하다가 당황스러웠던 것은 변수자체를 글로벌하게 사용해서 참조형태의 표기를 하지 않으면 해당 변수를 찾는다는 것 이였습니다.
가령 아래와 같은 코드가 존재하면,
function isOkRes($res, $err){
if(empty($res) || $res < 0 || !empty($err)){
return 'fail';
} else {
return 'succ';
}
}
php에서는 res와 err이름의 변수를 찾습니다.
만약에 해당 값을 아래처럼 활용해서 함수를 호출하면 동작하지 않습니다.
function isOkRes($res, $err){
if(empty($res) || $res < 0 || !empty($err)){
return 'fail';
} else {
return 'succ';
}
}
$updRes = sql_query("update sample set number = 1", $error);
isOkRes($updRes, $error); //동작하지 않습니다.
위 코드가 동작하지 않는 것은 파라미터 값이름이 res와 err로 되어있기 때문 입니다.
그래서..처음 적응하는데 시간이 좀 걸렸던 것 같습니다.
이를 해결하기 위해서는 "참조" 형태로 변수를 표현해야 합니다.
/*function isOkRes($res, $err){
if(empty($res) || $res < 0 || !empty($err)){
return 'fail';
} else {
return 'succ';
}
}*/
function isOkRes(&$res, &$err){ //&기호를 붙여줍니다.
if(empty($res) || $res < 0 || !empty($err)){
return 'fail';
} else {
return 'succ';
}
}
$updRes = sql_query("update sample set number = 1", $error);
isOkRes($updRes, $error); //동작!
위 내용처럼 &기호를 붙여주면 참조 전달(passing by reference)로 변수를 받게되어 집니다.
너무 오랜만에 php코딩이라 햇갈리면 안될 것 같습니다..^^;
반응형
'php' 카테고리의 다른 글
간단하게 정리한 php json 파싱 방법 (0) | |
---|---|
php 파일 저장, 이미지, 디렉토리 등등 (0) | |
PHP 세션 만료, Php session timeout, Php 세션 타임아웃 (0) | |
php mysql 연동 (0) | |
파일 쓰기 (0) |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글