PHP傳引用報錯(5.4版本)

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),升級後,相關功能不能正常使用,經查,其中緣由正是這個
其中採用遞歸傳引用的方式獲取部門信息,形成了錯誤。
以下圖:
 
修改的結果是:不論哪一種環境,定義時能夠有&,調用時不要&,是目前最爲兼容的一種寫法。
相關文章
相關標籤/搜索