首页 >后端开发 >php教程 >为什么 PHP 在使用 array_shift() 时会发出'严格标准:仅变量应通过引用传递”?

为什么 PHP 在使用 array_shift() 时会发出'严格标准:仅变量应通过引用传递”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-20 07:39:11688浏览

Why Does PHP Issue

理解 PHP 中的引用传递:严格标准和 Array_Shift()

在 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() 的返回值视为非变量。

解决警告

要在严格模式下解决警告,有两种选择:

  1. 修改方法签名:更改返回数组的方法的签名以避免使用参考。
  2. 使用中间变量: 将方法返回的数组分配给中间变量,然后将其传递给 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn