함수에 참조에 의한 전달을 할 수 있습니다. 이로써 함수가 변수를 변경할 수 있습니다. 문법은 다음과 같습니다:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a is 6 here
?>
함수 호출에 대해 참조 표시를 할수 없다는 것에 주의해야 한다. - 함수 선언에서만 참조 표시를 할수 있다 함수 선언만으로도 충분히 참조에 의해 인수를 정확하게 전달할수 있다. 최근 버전의 PHP에서 foo(&$a);처럼 &를 사용하면, "call-time pass-by-reference"가 배제되었다는 경고를 받습니다.
다음과 같은 것들은 참조에 의해 전달될수 있다:
함수에서 반환한 참조, 예:
<?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 이후 버전에서만 요구된다.