zoukankan      html  css  js  c++  java
  • PHP传引用报错(5.4版本)

    php5.3系列版本以及以前版本,传引用没有什么问题,升级到php5.4以后,传引用的地方,全报错
    Fatal error: Call-time pass-by-reference has been removed in D:www est est.php on line 6。看一下下面的例子。
     
    例1,递归传引用,在php 5.3及以及版本,测试结果
    <?php 
    function test($a,&$b){ 
        if($a < $b){ 
            echo $b."<br>"
            $b--
            test($a,&$b); 
        } 

    $a = 3
    $b = 6
    test($a,&$b); 
    //运行结果如下 
    6 
    5 
    4 
    ?>
    php 5.4以后就不行了,我是用php 5.4.11测试的。报Fatal error: Call-time pass-by-reference has been removed in D:www est est.php on line 6。
     
    例2,php5.4.11上面测试,只测试传引用
    <?php 
    function test($a,&$b){ 
        if($a < $b){ 
            $b--
            echo $b."<br>"
            //test($a,&$b); 
        } 

    $a = 3
    $b = 6
    test($a,$b);  //php5.4以前版本,输出结果是5 
     
    //test($a,&$b); //php5.3输出结果是5,php5.4及以后,报错Fatal error: Call-time pass-by-reference 。。。。 
    ?>
    php5.4以后,定义时可以有&,调用时加上&就会报错。这样调用感觉很怪。
     
    例3,php5.4以及递归传引用
    <?php 
    function test($a,&$b){ 
        if($a < $b){ 
            $b--
            echo $b."<br>"
            test($a,$b); 
        } 

    $a = 3
    $b = 6
    test($a,$b); 
    //php5.2,php5.3,php5.4都可以运行,运行结果: 
    5 
    4 
    3 
    ?>
     
    感觉这个5.3升到5.4有点坑爹,如果不知道改变的,升级就很郁闷了。
    本次系统正好升级PHP到5.4(原来是5.3),升级后,相关功能不能正常使用,经查,其中原因正是这个
    其中采用递归传引用的方式获取部门信息,造成了错误。
    如下图:
     
    修改的结果是:不论哪种环境,定义时可以有&,调用时不要&,是目前最为兼容的一种写法。
  • 相关阅读:
    18、【opencv入门】形态学图像处理(一):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
    17、【opencv入门】形态学图像处理(一):膨胀与腐蚀
    16、【opencv入门】创建Trackbar & 图像对比度、亮度值调整
    c++ 售货员的难题
    c++ 火柴棒等式
    c++ 素数圈
    c++ 分解数
    c++ 走迷宫
    c++ 二叉树遍历
    c++ n皇后问题
  • 原文地址:https://www.cnblogs.com/lfire/p/3370408.html
Copyright © 2011-2022 走看看