PHP程序报错Strict Standards: Only variables should be passed by reference in

本文介绍了解决PHP开发中出现的Strict Standards错误的方法,特别是针对reset()函数使用不当导致的问题。通过调整代码,避免了传参时的错误引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发中发现程序报错Strict Standards: Only variables should be passed by reference in,然后搜索解决。开发完项目就写个简单的代码然后记录下来,以防遗忘。
报错代码简例:

$testArr = [
    0 => 'a',
    1 => 'b',
    2 => 'c',
    3 => 'd'
];
reset(array_flip($testArr));

报错的原因也很简单,查看PHP手册reset函数:

mixed reset ( array &$array )

PHP版本自5.3开始,对引用传递参数的一些规则进行了变更,手册内容摘抄:

按引用传递参数的函数在被按值传递调用时行为发生改变. 此前函数将接受按值传递的参数, 现在将抛出致命错误. 之前任何期待传递引用但是在调用时传递了常量或者字面值 的函数, 需要在调用前改为将该值赋给一个变量。

这部分摘抄的来源是 PHP 手册 附录 从 PHP 5.2.x 移植到 PHP 5.3.x 部分,有兴趣的同学可以去看看。
摘抄部分的意思可以这么说:PHP 5.3以后(包括)这个内置函数的值是引用操作的,引用传递的参数要求必须是具体的变量,而不能通过函数返回值传递。
新的代码:

$testArr = array(
    0 => 'a',
    1 => 'b',
    2 => 'c',
    3 => 'd'
);
$newTestArr = array_flip($testArr);
reset($newTestArr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值