참조로 전달
참조로 전달
이 페이지에서는 함수에 변수를 참조로 전달하는 방법을 다룹니다. 참조로 전달하면 함수가 호출한 쪽의 변수를 직접 수정할 수 있고, 어떤 것들을 참조로 전달할 수 있는지도 함께 살펴봐요.
본문
변수를 참조로 함수에 전달하면, 그 함수가 변수를 수정할 수 있게 됩니다. 문법은 다음과 같아요.
<?php
function foo(&$var)
{
$var++;
}
$a = 5;
foo($a);
print $a; // $a is 6 here
참조로 전달할 수 있는 것들은 다음과 같습니다.
-
변수, 즉
foo($a) -
함수에서 반환된 참조. 예를 들면 다음과 같아요.
<?php function foo (& $var ) { $var ++; print $var ; } function & bar () { $a = 5 ; return $a ; } foo ( bar ());참조로 반환하는 것에 대한 자세한 내용은 참조 반환을 참고하세요.
그 외의 표현은 참조로 전달하면 안 돼요. 결과가 정의되지 않기 때문이죠. 예를 들어 다음의 참조 전달 예시는 전부 잘못된 경우입니다.
<?php
function foo(&$var)
{
$var++;
}
function bar() // Note the missing &
{
$a = 5;
return $a;
}
foo(bar()); // Produces a notice
foo($a = 5); // Expression, not variable
foo(5); // Produces fatal error
class Foobar {}
foo(new Foobar()) // Produces a notice as of PHP 7.0.7
// Notice: Only variables should be passed by reference