2013-04-29 118 views
0

假設下面的代碼:回聲和打印聲明

<?php 
echo 'hello' . print 123; 

執行。

我期望的是hello123,但實際輸出是123hello1

爲什麼123最先?爲什麼輸出包含1

(我也試圖把一對括號周圍hello,但還是同樣的結果。)

+2

對不起。我不是要求解決這個問題。我想要的是解釋。謝謝你的幫助 – sc1013 2013-04-29 13:44:25

回答

11
echo 'hello' . print 123; 

這樣可以將'hello'返回值的print 123。在print返回的值1,它輸出123。級聯的hello1輸出之後由echo。因此,評價是:

  1. 輸出123
  2. 回報1
  3. 串連'hello'1
  4. 輸出hello1
2

Documentation清楚地說,print函數將返回始終爲1。

所以在這裏如何去。

執行打印功能 - >輸出123 - >返回1 - > concat與hello

0

爲什麼123最先?
可能是因爲print語句首先被執行並且應該打印'123'。

爲什麼輸出結尾包含1?
由於「打印」返回1,你的回聲聲明回聲的那個「1」

1

print的返回值始終是。

你的代碼中有一個級聯點字符:

'hello' . print 123; 

因此所有零件都連接前評估:

  • '你好' 是 '你好'
  • 打印123:它顯示「123 '在屏幕上,並返回1

然後echo會顯示評估字符串:

echo 'hello'.'1' // '1' is the return value of print 

打印在字符串上的最後一個字符串是123hello1