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),升级后,相关功能不能正常使用,经查,其中原因正是这个
    其中采用递归传引用的方式获取部门信息,造成了错误。
    如下图:
     
    修改的结果是:不论哪种环境,定义时可以有&,调用时不要&,是目前最为兼容的一种写法。
  • 相关阅读:
    作业5,6 2019/10/23
    作业1、2、3、4 2019/10/23
    实现Map传参Mybatis
    maven工程配置pom.xml实现mybatis的访问数据库操作
    测试
    Postman篇之命令行测试
    unittest框架
    测试
    测试
    测试
  • 原文地址:https://www.cnblogs.com/lfire/p/3370408.html
Copyright © 2011-2022 走看看