在 PHP 中,嚴格標準模式可以在透過引用傳遞非變數值時發出警告。一個常見的例子是使用 array_shift() 函數時。
當 array_shift( ) 與作為參數傳遞的非變數值一起使用。例如:
$instance = new MyClass(); $el = array_shift($instance->find(...)); // Warning
相反,當使用包含陣列的變數呼叫array_shift() 時,不會產生警告:
function get_arr() { return [1, 2]; } $el = array_shift(get_arr()); // No warning
警告可能會令人困惑,因為array_shift() 是一個傳回陣列值的函數。然而,在嚴格模式下,PHP 將 array_shift() 的回傳值視為非變數。
要在嚴格模式下解決警告,有兩種選擇:
例如:
// Modify Method Signature function get_arr() { return [1, 2]; } $instance = new MyClass(); $el = array_shift($instance->get_arr()); // Use Intermediate Variable $el = array_shift($instance->get_arr() ?: []);
以上是為什麼 PHP 在使用 array_shift() 時會發出「嚴格標準:僅變數應透過參考傳遞」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!