在if和/或语句PHP中正确使用括号

时间:2015-06-10 23:15:22

标签: php styles

这是一个荒谬的问题......主要是希望证明我的老头程序员朋友错了。

我写if if这样的语句(其中包含AND / OR),我一直都知道......

if($something == $something OR $whatever == $whatever){stuff...}

我的老朋友这样做......

if(($something == $something) OR ($whatever == $whatever)){stuff...}

我从未见过有人这样做过。它运行没有错误。我告诉他这是无效的代码,但他耸耸肩说它跑了。有效吗?我的意思是......它确实在运行。额外的角色因此我仍然获胜。这是用PHP做旧的方式吗?我找不到后一种风格的任何信息。只是一种古玩。感谢。

4 个答案:

答案 0 :(得分:4)

两者都是有效的方式,第二种方法,额外的括号更具可读性。

Why use an extra set of parenthesis when using PHP boolean test in an IF()?

答案 1 :(得分:4)

括号也称为分组运算符,使用这些运算符可以在具有更高优先级的表达式之前评估优先级较低的表达式。

需要内部if语句表达式,根据使用某些算法(如Shunting Yard的运算符的优先级进行解析)。

因此,在一些表达式中添加了多少分组运算符并不重要,这些表达式已经保证在其他二元运算符之前进行求值(在您的情况下为OR)

例如。 4 * 3 + 5与(4 * 3)+ 5相同(因为*具有更高的优先级并且将在之前进行评估)

度Acc。调车场你的postfix表达是

$something $something == $whatever $whatever == OR

你的老朋友postfix也是

$something $something == $whatever $whatever == OR

唯一不同的是你的微观速度更快,而他的一个可能更具可读性

答案 2 :(得分:3)

老人的方法并不正确。它可以两种方式编写。这是因为您可以将复杂的布尔表达式一直评估为true或false,这就是所需的全部内容。如果有人说用尽可能少的括号写这个表达式,那么你的方法将是“正确的”。

答案 3 :(得分:3)

这是完全有效的,有些人可能会认为括号更易于阅读,但是没有正确的方式。

如果你有三个......:O

语法上,这种格式的东西

if ( a == b OR a == c OR a == d )

可能与此格式的内容完全不同

if ( a == b OR ( a == c OR a == d ) )
if ( ( a == b OR a == c ) OR a == d )