引用傳遞

可以將一個變量通過引用傳遞給函數(shù),這樣該函數(shù)就可以修改其參數(shù)的值。語法如下:

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

$a=5;
foo($a);
// 這里 $a 是 6
?>
注意在函數(shù)調(diào)用時沒有引用符號——只有函數(shù)定義中有。光是函數(shù)定義就足夠使參數(shù)通過引用來正確傳遞了。

以下內(nèi)容可以通過引用傳遞:

  • 變量,例如 foo($a)
  • 從函數(shù)中返回的引用,例如:

    <?php
    function foo(&$var)
    {
        
    $var++;
    }
    function &
    bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    詳細(xì)解釋見引用返回。

任何其它表達(dá)式都不能通過引用傳遞,結(jié)果未定義。例如下面引用傳遞的例子是無效的:

<?php
function foo(&$var)
{
    
$var++;
}
function 
bar() // 注意缺少 &
{
    
$a 5;
    return 
$a;
}
foo(bar()); // 導(dǎo)致 notice 信息

foo($a 5// 表達(dá)式,不是變量
foo(5// 導(dǎo)致致命錯誤

class Foobar
{
}

foo(new Foobar()) // 自 PHP 7.0.7 起生成通知
                  // 注意:只有變量應(yīng)該通過引用傳遞
?>