참조에 의한 전달

함수가 변수를 수정할 수 있도록 함수를 참조하여 변수를 전달할 수 있습니다. 구문은 다음과 같습니다.

                  
<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here
?>
                  
                

메모: 함수 호출에는 참조 기호가 없으며 함수 정의에만 있습니다. 함수 정의만으로도 참조로 인수를 올바르게 전달하기에 충분합니다.

다음 사항을 참조로 전달할 수 있습니다.

  • 변수, 즉 foo($a)
  • 함수에서 반환된 참조, 즉:
                  
<?php
function foo(&$var)
{
    $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
?>