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级别的错误。

  虽然关闭错误报告确实能不闹心,但盲目的忽视错误却是致命的。

  

  

 

  

 

转载于:https://www.cnblogs.com/AimeeCodeWorld/p/6849655.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值