リファレンスにより関数に変数を渡すことが可能です。この場合、関数内で その引数を修正可能になります。構文は次のようになります。
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a はここでは 6 です
?>
次のものはリファレンスで渡すことが可能です。
関数から返されるリファレンスは、次のようになります。
<?php
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
他の式は、結果が未定義となるため、リファレンスで渡すべきではありません。 例えば、リファレンスで渡す次の例は、無効です。
<?php
function bar() // & がないことに注意
{
$a = 5;
return $a;
}
foo(bar()); // PHP 5.0.5 以降、致命的なエラーが発生する
foo($a = 5); // 式、変数ではない
foo(5); // 致命的なエラーが発生する
?>