zoukankan      html  css  js  c++  java
  • 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级别的错误。

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

      

      

      

  • 相关阅读:
    c语言----- 冒泡排序 for while do-while 递归练习
    c语言----实战植物大战僵尸
    c语言-----劫持系统03
    c语言-----劫持自己02
    c语言-----劫持原理01
    win10神州网信政府版去掉屏保
    将WebApi发布到IIS上(IIS6.0)(转)
    关于Logstash中grok插件的正则表达式例子
    说说看板在项目中的应用
    解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题
  • 原文地址:https://www.cnblogs.com/AimeeCodeWorld/p/6849655.html
Copyright © 2011-2022 走看看