본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

   - 이것저것 다 하기를 좋아하는 11년차 웹개발자 "Front80" 입니다 * C빼고..
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


php

Php 일반변수, 참조변수

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2020. 9. 14.

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코딩이라 햇갈리면 안될 것 같습니다..^^;

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글