[PHP] 변수앞에 & 를 붙여서 사용하면 어떻게 될까?
(c)2008 가치있는 삶
http://berry2.tistory.com
PHP는 포인터가 없지만 변수앞에 &를 붙여서 값이 복사되는 것이 아니라 참조되게 만들 수 있다.
이 참조라는 기능이 정확히 뭔지는 모르겠지만, 내가 아는대로 설명하면
1. 변수에서 참조 사용
예를들어서 아래와 같이
$a=&$b;
이렇게 했을경우에 $b와 $a 는 완전히 동일하다.
$b가 이름만 $a로 바뀐 것이라고 생각하면 된다.
따라서, 아래처럼..
$b=10;
이렇게 b의 값을 변경시키면 $a의 값도 함께 변한다.
즉, a의 값은 10 이다.
만일 이때,
$c=$b;
이렇게 하면 어떻게 될까?
이것은 $c=10 이라는 뜻이다. 여기에서는 참조가 아니기때문에
아래처럼
$c=20;
이렇게 c의 값을 변경시켜도 a 와 b 의 값은 변하지 않는다.
변하게 하고 싶었다면..
$c=&$b;
이렇게 했어야 한다.
2. 함수에서 참조 사용
이제는 함수에서 참조 사용하는 방법을 알아보자!
function f(&$d){
$d=20;
}
이런 함수를 만들고
$x=10;
f($x);
echo $x;
이렇게 하면 함수 f 가 호출되면서
$d=&$x; 가 실행되기때문에
f 함수안에서 $d=20; 이 실행되면
$x의 값도 20으로 변한다.
결과는 20이 출력된다.
그런데 이런식으로 함수를 정의하지 않았는데도 함수 호출시에 위와같은 효과를 얻고 싶다면? 어떻게 할까?
예를들어서
function ff ($d){
$d=50;
}
이런 함수가 있는데
$x=10;
ff($x);
echo $x;
이런 코드가 있고..
이 상태에서 실행하면 당연히 10이 출력되지만
& 를 붙이는 것만으로도, $x의 값을 50으로 만들 수 있다.
어떻게 할까?
$x=10;
ff(&$x);
echo $x;
이렇게 하면 된다. ^-^
단지 ff 호출시에 넘기는 변수앞에 &를 붙이면 끝이다.
이것은 코드로 변환될때
$d=&$x;
이렇게 처리된다.
수고하셨습니다^-^
댓글