Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
下面是奇怪的东西,我没有得到
if (print("foo") || print("bar")) { // "foo" has been printed. }
为什么输出是1?
1
请解释一下?
这是因为 PHP 是一种荒谬的语言。print不是一个正常的功能,它是一种语言结构。这一行实际上被解析为:
print
if (print (("foo") || print("bar")))
And("foo") || print("bar")是一个计算结果为 的表达式1。布尔上下文中的字符串"foo"为真,因此||运算符 yield 1。
("foo") || print("bar")
"foo"
||
如果您以人们期望的解析方式显式地将表达式括起来:
if ((print("foo")) || (print("bar")))
那么输出就是你所期望的:
foo