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);
//運行結果以下
6
5
4
?
>
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
4
3
?
>
感受這個5.3升到5.4有點坑爹,若是不知道改變的,升級就很鬱悶了。
本次系統正好升級PHP到5.4(原來是5.3),升級後,相關功能不能正常使用,經查,其中緣由正是這個
其中採用遞歸傳引用的方式獲取部門信息,形成了錯誤。
以下圖:
修改的結果是:不論哪一種環境,定義時能夠有&,調用時不要&,是目前最爲兼容的一種寫法。