php中出现Strict Standards: Only variables should be passed by reference in的解决方法
Posted AimeeGao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中出现Strict Standards: Only variables should be passed by reference in的解决方法相关的知识,希望对你有一定的参考价值。
今天在练习一个小demo的时候,在localhost文件中出现了这样的notice,具体的原因和解决方法做如下分析。
题目:已知一个字符串如下,将其最后两项转换为数组。
$week = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday";
主要的思路:1. 先使用explode()函数将字符串进行分割,因该函数的结果会返回一个数组,所以分割的部分会独立的存入该数组中。
2. 再使用array_splice()函数,返回从某个位置开始,包含有被移除单元的数组。
解答如下:
$week1 = "Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday";
$str = array_splice(explode(",", $week1), -2);
echo \'<pre>\';
print_r($str);
echo \'</pre>\';
echo \'<br/>\';
输出结果:
发现php给出了这样的一个提示。
上网查了一下,发现其大致意思是:只有变量才能通过引用传递。没看明白,继续查。
最终发现,PHP5.3以上默认只能传递具体的变量,而不能通过函数返回的值传递变量。
上述代码中,
explode(",", $week1);
这一句代码,其本身不能作为变量进行引用(reference)。
所以代码应该做如下改变:
$week2 ="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday";
$str = explode(",", $week2);
echo "<br/>";
echo \'<pre>\';
print_r($str);
echo \'</pre>\';
echo \'<br/>\';
$array = array_splice($str,-2);
echo \'<pre>\';
print_r($array);
echo \'</pre>\';
输出结果:
发现提示消失,正常输出结果。
其实,使提示消失的方法还有一种,就是使用
error_reporting(0); 关闭所有notice和warning级别的错误。
虽然关闭错误报告确实能不闹心,但盲目的忽视错误却是致命的。
以上是关于php中出现Strict Standards: Only variables should be passed by reference in的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
MagicZoom bug-Strict Standards: Only variables should be assigned by reference Error
ECSHOP安装或使用中提示Strict Standards: Non-static method cls_image:
ECshop Strict Standards: Only variables should be passed by reference in解决办法