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),升级后,相关功能不能正常使用,经查,其中原因正是这个
    其中采用递归传引用的方式获取部门信息,造成了错误。
    如下图:
     
    修改的结果是:不论哪种环境,定义时可以有&,调用时不要&,是目前最为兼容的一种写法。
  • 相关阅读:
    42-蓄水池
    11-盛水最多的容器
    老虎-删除排序链表中的重复节点
    72-编辑距离
    53-3-数组中数值和下标相等的元素
    53-2-0~n-1中缺失的数字
    53-1-在排序数组中查找数字
    52-两个链表的第一个公共节点
    51-数组中的逆序对
    I/O相关
  • 原文地址:https://www.cnblogs.com/lfire/p/3370408.html
Copyright © 2011-2022 走看看