引用傳遞:可以將一個(gè)變量通過引用傳遞給函數(shù),這樣該函數(shù)就可以修改其參數(shù)的值。語法如下:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a is 6 here
?>
注意在函數(shù)調(diào)用時(shí)沒有引用符合,只有函數(shù)定義中有。光是函數(shù)定義就足夠使參數(shù)通過引用來正確傳遞了。
以下內(nèi)容可以通過引用傳遞:
- 變量;
- new 語句;
- 從函數(shù)中返回的引用。
示例:
<?php
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
任何其他表達(dá)式都不能通過引用傳遞,結(jié)果未定義。例如下面引用傳遞的例子是無效的:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Note the missing &
{
$a = 5;
return $a;
}
foo(bar()); // 自 PHP 5.0.5 起導(dǎo)致致命錯(cuò)誤,自 PHP 5.1.1 起導(dǎo)致嚴(yán)格模式錯(cuò)誤
// 自 PHP 7.0 起導(dǎo)致 notice 信息
foo($a = 5) // 表達(dá)式,不是變量
foo(5) // 導(dǎo)致致命錯(cuò)誤
?>