我不确定括号是否有所不同或我做错了什么! 这是我偶然遇到的情况..
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。
谢谢!
答案 0 :(得分:1)
print (FALSE or TRUE); //prints '1'
评估FALSE or TRUE
(赋予TRUE),然后打印该评估的结果
print FALSE or TRUE; //prints nothing
打印FALSE(显示为空字符串);如果失败(或)则不执行TRUE
答案 1 :(得分:0)
这背后的原因是运营商优先级:http://php.net/manual/en/language.operators.precedence.php
看起来print
具有与赋值运算符相同的运算符优先级,其优先级高于or
。
如果您使用||
代替or
print FALSE || TRUE; //1
打印值为1,因为||
的优先级高于赋值运算符。
希望这是有道理的。