function myfunc($a){ echo $a + 10;}$val = 10;echo "myfunc($val)=".myfunc($val); //20myfunc(10)
不是應該輸出myfunc(10)=20嗎?
回複內容:
function myfunc($a){ echo $a + 10;}$val = 10;echo "myfunc($val)=".myfunc($val); //20myfunc(10)
不是應該輸出myfunc(10)=20嗎?
經過測試:
LZ這道面試題主要是考察執行順序,具體解答過程如下:
a.echo "myfunc($val)=";
單獨這樣的時候,輸出結果為:myfunc(10)= ,說明雙引號中只不解析函數,只解析變數
b.echo "myfunc($val)=".myfunc($val);
拼接上後面的函數後,結果為:20myfunc(10)= ,說明後面的函數先執行輸出了20。然後執行了echo語句。
總結:第一步執行後面的函數輸出了20,然後在執行echo語句。故結果為:20myfunc(10)=
笑話… 你的 myfunc 的輸出是 echo 又不是 return .... 不要異想天開好麼… 函數先執行然後再是外部的 echo 執行啊……
函數myfunc裡面直接輸出裡結果,不是return
你應該是 return $a + 10; 吧
在函數裡 echo 是什麼鬼
為啥=沒了 我感覺應該是 20mytest(10)=,前面那個20應該是後面那段的輸出。
echo 的時候是先把 echo 後面的值計算出來之後才把最終結果輸出的
計算的過程執行了 myfunc 這個函數,而 myfunc 裡面有一個 echo 了所以就先輸出了 20
另外,函數裡面要有 return 才會傳回值
function myfunc($a){ return $a + 10;}$val = 10;echo "myfunc($val)=".myfunc($val);
function myfunc($a){ echo $a + 10; echo "\n";}$val = 10;echo "myfunc($val)=".myfunc($val); //20myfunc(10)
這樣來看,就明確多了。
我也算是看明白了, 你在函數裡面直接echo 。好好看清楚代碼,你就明白了