update : 2015.11.03
php.shukuma.com

검색:
 
 
참조에 의한 전달

참조에 의한 전달

함수에 참조에 의한 전달을 할 수 있습니다. 이로써 함수가 변수를 변경할 수 있습니다. 문법은 다음과 같습니다:

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

$a=5;
foo($a);
// $a is 6 here
?>
함수 호출에 대해 참조 표시를 할수 없다는 것에 주의해야 한다. - 함수 선언에서만 참조 표시를 할수 있다 함수 선언만으로도 충분히 참조에 의해 인수를 정확하게 전달할수 있다. 최근 버전의 PHP에서 foo(&$a);처럼 &를 사용하면, "call-time pass-by-reference"가 배제되었다는 경고를 받습니다.

다음과 같은 것들은 참조에 의해 전달될수 있다:

  • 변수, 예, foo($a)
  • New 구문, 예. foo(new foobar())
  • 함수에서 반환한 참조, 예:

    <?php
    function &bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    참조로 반환하기에 대해서도 참고하십시오.

결과가 정의되어 있지 않기 때문에, 다른 표현식을 참조에 의해 전달해서는 안됩니다. 예를 들어, 다음과 같은 참조에 의한 전달 예제는 유효하지 않다.

<?php
function bar() // Note the missing &
{
    
$a 5;
    return 
$a;
}
foo(bar()); // PHP 5.0.5부터 치명적인 오류가 발생합니다

foo($a 5); // 변수가 아닌, 표현식입니다
foo(5); // 치명적인 오류가 발생합니다
?>
이런 조건은 PHP 4.0.4 이후 버전에서만 요구된다.