打印行为php

时间:2012-10-18 00:55:30

标签: php

下面是奇怪的,我没有得到

if (print("foo") || print("bar")) {
  // "foo" has been printed.
}

为什么输出为1

可以解释一下吗?

1 个答案:

答案 0 :(得分:5)

这是因为PHP是一种荒谬的语言。 print不是正常的函数,它是一种语言结构。该行实际上被解析为:

if (print (("foo") || print("bar")))

("foo") || print("bar")是一个评估为1的表达式。布尔上下文中的字符串"foo"为true,因此||运算符会生成1

如果你明确地将表达式括起来,那就是人们期望它被解析的方式:

if ((print("foo")) || (print("bar"))) 

然后输出就是你所期望的:

foo