在 if with and/or 语句 PHP 中正确使用括号


Proper use of parentheses in if with and/or statements PHP

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

我写这样的语句(其中有 AND/OR 的语句),正如我一直知道的那样......

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

我的老朋友这样做...

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

我以前从未见过有人这样做。它确实运行没有错误。我告诉他这是无效的代码,但他耸了耸肩,说它可以运行。有效吗?我的意思是。。。它确实运行。额外的角色,所以我仍然获胜。这是在PHP中执行此操作的旧方法吗?我找不到有关后一种样式的任何信息。只是一种好奇心。谢谢。

两者都是有效的方法,第二个带有额外的括号更易读。

在 IF() 中使用 PHP 布尔测试时,为什么要使用一组额外的括号?

括号也称为分组运算符,用于在具有较高优先级的表达式之前计算优先级较低的表达式。

在 if 语句表达式中,该表达式根据运算符的优先级使用某种算法(如调车场)进行解析。

因此,将多少分组运算符添加到某个表达式中并不重要,该表达式已经保证在其他二元运算符之前进行计算(在您的情况下为 OR)

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

根据调车场,您的后缀表达式是

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

而你的老朋友后缀也是

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

唯一的区别是你的是微更快,而他的可能更易读

老人的方法没有错。它可以双向编写。这是因为您可以计算一个复杂的布尔表达式,一直到真或假,这就是所需要的。如果有人说用尽可能少的括号写这个表达式,那么你的方法将是"正确的"。

这是完全有效的,有些人可能会争辩说括号更易于阅读,但是没有正确的方法。

如果你有三个... :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 )