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

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

Mary-Kate Olsen
发布: 2024-12-20 07:39:11
原创
655 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板