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

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

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : 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코딩이라 햇갈리면 안될 것 같습니다..^^;

 

반응형

'php' 카테고리의 다른 글

간단하게 정리한 php json 파싱 방법  (0) 2020.11.03
php 파일 저장, 이미지, 디렉토리 등등  (0) 2020.09.14
PHP 세션 만료, Php session timeout, Php 세션 타임아웃  (0) 2020.09.14
php mysql 연동  (0) 2019.07.14
파일 쓰기  (0) 2019.04.25
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글