0

我不确定括号是否有所作为,或者我做错了什么!这是我不小心遇到的情况。。

 print (FALSE or TRUE);     //prints '1'
 print FALSE or TRUE;       //prints nothing

我们知道FALSE or TRUE计算结果为TRUE,但令人惊讶的是,打印TRUE不受括号影响!

  print (TRUE);     //prints '1'
  print TRUE;       //prints '1'

手册清楚地提到不需要使用括号!这是手册中的引用..

print 实际上不是一个真正的函数(它是一种语言结构),因此您不需要在其参数列表中使用括号。

我想知道的..

  • 它是一个错误吗?
  • 如果不是错误,括号如何影响输出?
  • 哪种方式给出预期的输出,使用括号还是省略它们?

我在 Windows 8 上使用 PHP 版本 5.4.7。

谢谢!

4

2 回答 2

1
print (FALSE or TRUE);     //prints '1'

评估FALSE or TRUE(给出 TRUE),然后打印该评估的结果

print FALSE or TRUE;       //prints nothing

打印 FALSE(显示为空字符串);如果失败(或)则不执行任何操作 TRUE

于 2013-06-29T15:19:55.343 回答
0

这背后的原因是运算符优先级:http: //php.net/manual/en/language.operators.precedence.php

它看起来print与优先级高于的赋值运算符具有相同的运算符优先级or

如果您尝试相同的示例但使用||而不是or

print FALSE || TRUE; //1

打印的值为 1,因为||它的优先级高于赋值运算符。

希望这是有道理的。

于 2013-06-29T15:34:03.247 回答