下面是一些奇怪的事情,我沒有得到打印行爲PHP
if (print("foo") || print("bar")) {
// "foo" has been printed.
}
爲什麼輸出爲1
?
請說明一下嗎?
下面是一些奇怪的事情,我沒有得到打印行爲PHP
if (print("foo") || print("bar")) {
// "foo" has been printed.
}
爲什麼輸出爲1
?
請說明一下嗎?
這是因爲PHP是一種荒謬的語言。 print
不是一個正常的函數,它是一種語言結構。此線實際上解析爲:
if (print (("foo") || print("bar")))
("foo") || print("bar")
而且是將計算得到1
的表達式。布爾上下文中的字符串"foo"
爲真,因此||
運算符產生1
。
如果顯式括表達人們所期望的方式,要解析:
if ((print("foo")) || (print("bar")))
然後輸出你所期望的:
foo
底線是檢查返回'print'的值是無意義的。實際上,*給print返回值是無意義的。我的時間機器在哪裏?我需要回去和大錘的人。 – Charles
'那麼||由於邏輯快捷方式,操作員可以得到1. * *不帶*打印「欄」。 –
可能(非精確 - 丁 - close-enough)[奇怪的回聲,在PHP打印行爲?]的副本(http://stackoverflow.com/questions/3340330/strange-echo-print-behaviour-in-php) – Charles