下面是奇怪的,我没有得到
if (print("foo") || print("bar")) {
// "foo" has been printed.
}
为什么输出为1
?
可以解释一下吗?
答案 0 :(得分:5)
这是因为PHP是一种荒谬的语言。 print
不是正常的函数,它是一种语言结构。该行实际上被解析为:
if (print (("foo") || print("bar")))
("foo") || print("bar")
是一个评估为1
的表达式。布尔上下文中的字符串"foo"
为true,因此||
运算符会生成1
。
如果你明确地将表达式括起来,那就是人们期望它被解析的方式:
if ((print("foo")) || (print("bar")))
然后输出就是你所期望的:
foo