在 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中文网其他相关文章!