任何人都可以告訴下面表達式的內部過程嗎?爲什麼「echo'2'。print(2)+ 3」print 521?
<?php echo '2' . print(2) + 3; ?>
// outputs 521
任何人都可以告訴下面表達式的內部過程嗎?爲什麼「echo'2'。print(2)+ 3」print 521?
<?php echo '2' . print(2) + 3; ?>
// outputs 521
回聲一個連接字符串組成:
字符串「2」 功能打印(「2」),這將返回true,它獲取字符串化至1 字符串的結果「3」
現在,操作順序是真的很有趣這裏,不能與521都結束了!讓我們嘗試一個變體,找出發生了什麼問題。
回聲2'.print(2)+ 3; 這產生521
PHP是解析的是,然後,如:
回波 '2'。 (打印('2')+'3')) 賓果!左側的打印會首先評估,打印「5」,這讓我們
回聲「1」。打印('2') 然後評估左側打印,所以我們現在打印'52',讓我們留下
echo'1'。 '1'; 成功。 521.
我會強烈建議不要附和打印的結果,也沒有印刷回聲的結果。這樣做首先是非常荒謬的。
這是一個可怕的答案。 –
print
不是一個函數,所以括號不會像你想象的那樣工作。它取表達式(2) + 3
(5
)的值並輸出它。它返回1
本身,它連接到'2'
,然後echo
ed。
它首先評估所有的表達式。 'print'是一個在評估時輸出一個值的表達式。所以它在'echo'之前輸出。 – deceze
首先加入2和3完成,這導致5和被輸出。
下一頁打印總是返回1
。返回值與2
連接得到21
,然後回顯。
print(2) + 3
將導致5(這是一樣的print (2 + 3)
或print 2+3
。因爲打印實際上不是在這種情況下的函數,括號大多是毫無意義的。要注意的最後一件事是,print
獲取echo
之前評估。
輸出到目前爲止是:5
echo '2' . print
將導致21,因爲印刷始終返回1
輸出現在是: '521'
+1爲您的優秀說明... – mrsrinivas
什麼是downvotes?其中4人並沒有提供任何理由。 –
這樣的代碼不應該寫在任何健全的情況下...... :)這是矩陣勺子彎曲代碼。 – CodeAngry
將標題從'什麼'改爲'爲什麼......'可能會降低收益。你的問題是一個有趣的問題。 – StuartLC