2013-05-05 139 views
-2

想知道爲什麼輸出爲0(零)的代碼片段?任何人都可以請澄清爲什麼下面的代碼輸出爲零。通過引用調用一個PHP函數意外行爲

<?php 
function a($number) 
{ 
    return (b($number) * $number); 
} 

function b(&$number) 
{ 
    ++$number; 
} 

echo a(5); // output 0(zero) ? 
?> 

回答

2

您永遠不會從該函數返回任何值,並且您正在嘗試echo的返回值。

function b(&$number) 
{ 
    return ++$number; 
} 

請注意,這是通過引用,採用它的參數,因爲你沒有原始值5參考函數一個愚蠢的例子。這樣的事情會更合適:

function b(&$number) { 
    ++$number; 
} 

$num = 5; 
b($num); 
echo $num; // Prints 6 
+0

+1速度,大有趕超太:

必須要麼返回一個值:

return ++$number; 

或直接呼應的變量。 – 2013-05-05 05:28:02

0

函數名稱是B,但要調用...

而且,你是呼應的功能,不返回值。這意味着你正在迴應一個非初始化變量。在返回

$number = 5; 
    b($number); 
    echo $number;