用於PHP是可能的以下模式:PHP數組,並通過按引用
$arr = array(1, 2, 3);
$newarr = foo($arr);
或pass-:
function foo($arr)
{
// modify $arr in some way
return $arr;
}
這可以隨後使用通過噪聲值被稱爲通過參考:
$arr = array(1, 2, 3);
foo(&$arr);
但「呼叫時傳遞引用已被棄用」。修改函數簽名:
function foo(&$arr)
將處理傳遞按引用的情況下,反而會打破原有功能的兩用性質,因爲傳遞的價值已不再可能。
有沒有辦法解決這個問題?
它觸發一個E_DEPRECATED,它只是一個* notice *錯誤級別。但功能本身不受影響。這不是「不再可能」。 (它仍然不會被刪除在明年的PHP 5.4 ..) – mario 2011-05-26 12:35:54
我的意思是通過價值傳遞時調用一個函數聲明爲通過引用參數是不可能的。正如你所指出的那樣,即使函數沒有以這種方式聲明它的參數,它仍然是可能的*,但我總是希望儘可能避免被棄用的東西。 – 2011-05-26 12:41:40
是的,這正是爲什麼它被*聲明*棄用。沒有太多想法,它通常被濫用。而這個錯誤信息是爲了嚇跑人們遠離這種語法。現在您已經對實際代碼進行了一些思考,它不再適用於您。 (我會避免在非即時即將被刪除的支持語法上使用繁瑣的解決方法。) – mario 2011-05-26 12:44:36