Forum und email

참조에 의한 전달

참조에 의해 함수로 변수를 전달할수 있다. 이런 기법은 함수의 인수를 변경할수 있도록 한다. 문법은 다음과 같다:

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

$a=5;
foo ($a);
// $a is 6 here
?>
함수 호출에 대해 참조 표시를 할수 없다는 것에 주의해야 한다. - 함수선언에서만 참조표시를 할수 있다 함수 선언만으로도 충분히 참조에 의해 인수를 정확하게 전달할수 있다.

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

  • 변수, i.e. foo($a)
  • New 구문, i.e. foo(new foobar())
  • 참조, 함수에서 돌려받기, i.e.:

    <?php
    function &bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    참조로 돌려받기에서도 이 주제와 관련된 내용을 볼수 있다.

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

<?php
function bar() // Note the missing &
{
    
$a 5;
    return 
$a;
}
foo(bar());

foo($a 5// Expression, not variable
foo(5// Constant, not variable
?>
이런 조건은 PHP 4.0.4 이후 버전에서만 요구된다.