2

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

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

为什么输出是1

请解释一下?

4

1 回答 1

5

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

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

And("foo") || print("bar")是一个计算结果为 的表达式1。布尔上下文中的字符串"foo"为真,因此||运算符 yield 1

如果您以人们期望的解析方式显式地将表达式括起来:

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

那么输出就是你所期望的:

foo
于 2012-10-18T00:59:02.960 回答