php5.3系列版本以及以前版本,传引用没有什么问题,升级到php5.4以后,传引用的地方,全报错
Fatal error: Call-time pass-by-reference has been removed in D:\www\test\test.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); 
//运行结果如下 



?>

php 5.4以后就不行了,我是用php 5.4.11测试的。报Fatal error: Call-time pass-by-reference has been removed in D:\www\test\test.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.3升到5.4有点坑爹,如果不知道改变的,升级就很郁闷了。
本次系统正好升级PHP到5.4(原来是5.3),升级后,相关功能不能正常使用,经查,其中原因正是这个
其中采用递归传引用的方式获取部门信息,造成了错误。
如下图:
 
修改的结果是:不论哪种环境,定义时可以有&,调用时不要&,是目前最为兼容的一种写法。

PHP传引用报错(5.4版本)的更多相关文章

  1. array_walk_recursive 地址引用报错的问题

    今天看十八哥的视频,学习array_walk_recursive的用法,发现一直报错: PHP版本:5.6.19 代码界面: 报错界面: 查了很长时间,不知道什么问题,后来在网上终于找到原因所在: + ...

  2. spring jpa 实体互相引用返回restful数据循环引用报错的问题

    spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLa ...

  3. Linux - xshell上传文件报错乱码

    xshell上传文件报错乱码,解决方法 rz -be 回车 下载sz  filename

  4. Azkban上传文件报错installation Failed.Error chunking

    azkaban 上传文件报错Caused by: java.sql.SQLException: The size of BLOB/TEXT data inserted in one transacti ...

  5. Tomcat上传文件报错:returned a response status of 403 Forbidden

    出现这样的错误是没有权限对服务器进行写操作.需要在这个项目所在的tomcat中配置可写操作即可: 在tomcat的web.xml添加下面代码: <init-param><param- ...

  6. ojdbc15-10.2.0.4.0.jar maven 引用报错 Dependency 'com.oracle:ojdbc15:10.2.0.4.0' not found

    ojdbc15-10.2.0.4.0.jar maven 引用报错 问题现象 在 Maven 工程中引用 ojdbc15-10.2.0.4.0.jar 报错,报错信息:Dependency 'com. ...

  7. rz上传文件报错:rpm Read Signature failed: sigh blob(1268): BAD, read returned 0

    上传文件报错: [root@www localdisk]# rpm -ivh cobbler* error: cobbler-2.8.4-4.el7.x86_64.rpm: rpm  Read  Si ...

  8. 【问题与解决】Github 上传代码报错(error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version)

    今天修改了GitHub 的代码,代码更新,想上传更新,却发现上传报错. 错误代码:error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 al ...

  9. 上传文件报错System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。

    在上传文件的时候报错. 错误: System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetRe ...

随机推荐

  1. openwrt chinadns

    opkg update opkg install ip ipset resolveip iptables-mod-tproxy resolveip libopenssl luci-i18n-base- ...

  2. Modelsim覆盖率

    步骤: 1.compile选项 => compile options  Covrage setting  (或者可以点击选中文件,编辑properties,在coverage中选择要实现的覆盖选 ...

  3. 深入Windows窗体原理及控件重绘技巧

    之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解,如果你有类似的疑惑希望 ...

  4. C#扫盲之:静态成员、静态方法、静态类、实例成员及区别

    文章目录 1.静态成员.实例成员 2.静态类 3.类的静态成员和非静态成员区别 --------------------------------------分割线------------------- ...

  5. Yii框架页面运行流程

    Yii框架页面运行流程 CComponent | CModel | CActiveRecord.CFormModel(所有模型的父类) | 表名.php(模型) | 入口文件------------- ...

  6. 初次使用nodejs的问题

    使用npm install -g 'xxx' 之后仍然报 Cannot find module 'xxx' 错误,可以通过设置环境变量来解决: export NODE_PATH=/usr/local/ ...

  7. android下面的文案重用

    尽可能地在xml中建立各种索引,建立映射表,而不是直接每次索引,这对于大规模的文字变动来说是极有好处的.

  8. A题笔记(11)

    No.1508  代码:https://code.csdn.net/snippets/192058 考察点:①char型字符转换成对应的 ASKII 的编码 可以通过这样对 string 的每一个字符 ...

  9. row_number() OVER (PARTITION BY COL1 ORDER BY COL2)

    select *,ROW_NUMBER() over(partition by deviceID order by RecordDate desc row_number() OVER (PARTITI ...

  10. O-C相关06:self和super关键字介绍——self关键字

    self关键字介绍 1.self和super OC 版权声明:本文为博主原创文章,未经博主允许不得转载. posted @ 2015-08-04 12:46 王刚韧(wanghy_iOS) 阅读(.. ...