如果一定要傳遞陣列的引用,PHP7 裡面咋整

zhaiduting發表於2022-05-31

PHP
圖中程式碼在瀏覽器中可以正常執行,但是跑到 PHP 裡面卻成了死迴圈。因為陣列在 js 中是按引用傳值的,但在 PHP 中卻是按值傳遞的。

使用 & 符合可以強制陣列傳遞引用,如下所示

function fetch($arr)
{
    return array_pop($arr);
}

function exist($n)
{
    return $n ?: false;
}

$arr = array(1, 2, 3, 4, 5, 6);  // v5.3 不能使用 []
while (exist(fetch(&$arr))) {    // 必須加上 &
    print_r($arr);
}

但是這麼做的缺點很明顯,首先定義陣列比較麻煩,不能使用 [ ] 了。更重要的是使用 & 傳遞引用的辦法只能適用於 PHP5.3 及以下的版本

PHP

如果一定要傳遞陣列的引用,PHP7、8 裡面咋整?感謝 php_yt 指點迷津!雖然高階版本不支援呼叫時加 & 的寫法,但卻支援函式定義時新增 & 的寫法

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章