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),升级后,相关功能不能正常使用,经查,其中原因正是这个
其中采用递归传引用的方式获取部门信息,造成了错误。
如下图:
修改的结果是:不论哪种环境,定义时可以有&,调用时不要&,是目前最为兼容的一种写法。