嚴格標準:了解「僅應透過引用傳遞變數」警告
在PHP 中,嚴格模式強制執行某些程式設計實踐以改進程式碼品質和一致性。其中一種做法是避免透過引用傳遞非變數值。本問題探討了此警告背後的原因,並提供了避免該警告的解決方案。
問題:引用參數和回傳值
考慮以下程式碼片段:
$el = array_shift($instance->find(..))
此程式碼會觸發嚴格的標準警告「僅應透過引用傳遞變數」。然而,以下的程式碼卻沒有:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
要理解這種行為,我們需要深入研究 PHP 的引用處理。當引用傳遞給函數時,對該參數所引用的變數所做的任何變更都會反映在原始變數中。在第一個程式碼片段中,$instance->find(...) 傳回一個數組,它不是一個變數。透過引用傳遞此數組會觸發警告。
了解異常
但是,此異常可能會產生誤導。在第二個程式碼片段中,函數 get_arr() 傳回一個數組,這意味著可以將引用傳遞給它。不過,函數本身並不會使用引用參數,因此可以避免警告。
避免警告的解決方案
要消除警告,有兩種選擇:
範例:
function get_arr(){ return array(1, 2); } $inter = get_arr(); $el = array_shift($inter);透過使用中間變數 $inter,我們可以避免傳遞回傳值直接引用get_arr(),解決嚴格標準警告。
以上是為什麼 PHP 的嚴格模式會警告「只有變數應該透過引用傳遞」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!