这是一个荒谬的问题...主要是为了证明我的老头程序员朋友错了。
我写这样的语句(其中有 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 )