You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP出现Only variables should be passed by reference报错如何解决?

报错原因

array_shift() 函数的作用是弹出并移除数组的第一个元素,该函数的参数要求按引用传递,因为函数会直接修改传入的数组本身。你代码中直接将 array_values($errors) 的返回值(临时计算结果,不是实际存储的变量)传入 array_shift(),不符合传引用的参数要求,因此抛出了这个Notice提示。

你当前提供的代码中所有使用 array_shift(array_values(xxx)) 写法的位置都存在相同问题,不止第155行一处。

修复方法

你可以任选下列任意一种方案修改所有有问题的代码行:

  • 方案一:先将array_values的结果赋值给临时变量,再传入array_shift
    以第155行的代码为例,原错误代码:
return array('status' => 'error', 'errors' => array_shift(array_values($errors)));

修改为:

$tmp_values = array_values($errors);
return array('status' => 'error', 'errors' => array_shift($tmp_values));
  • 方案二:直接取数组第一个下标,不需要调用array_shift(PHP 5.4及以上版本支持,代码更简洁)
return array('status' => 'error', 'errors' => array_values($errors)[0]);

注意:代码中所有出现array_shift(array_values($v))、array_shift(array_values($qv))的位置都需要按照上述方法同步修改,避免其他位置触发相同报错。

内容的提问来源于stack exchange,提问作者Stephen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 09:03:03