0

可能重复:
逻辑运算符,|| 或?

我一直认为 OR 是另一种写 || 的方式 PHP 中的运算符。我更喜欢使用 OR 而不是 || 的唯一方法 是它使代码更容易阅读,因为 || 可能会与 II 或 11 或其他什么混淆...

有一天,我偶然发现了这件事:

<?php 
      $a = 'string_b';
      $active = ($a == 'string_a') OR
                ($a == 'string_b') OR
                ($a == 'string_c');  
   var_dump($active); // Prints FALSE;
?>

为什么会这样?

4

3 回答 3

4

唯一的区别是运算符优先级,请参阅运算符优先级||具有比 更高的优先级OR

顺便说一句,var_dump($a) 返回 null打印正确的东西,string_b. 但是,var_dump($active)确实会产生意想不到的结果,false。实际上,=具有比 更高的优先级or,因此您的代码相当于:

($active = ($a == 'string_a')) OR ($a == 'string_b') OR ($a == 'string_c');

它首先分配false给 active,然后执行第一个的正确部分OR

于 2012-09-17T08:42:08.470 回答
2

一样的。但||优先级高于OR http://php.net/manual/en/language.operators.precedence.php

于 2012-09-17T08:40:32.027 回答
1

= 的优先级高于 OR。因此,首先评估 $active = ($a == 'string_a') ,这是错误的。将整个右侧括在它自己的一组括号中,您将得到您期望的结果。

<?php 
      $a = 'string_b';
      $active = (
                 ($a == 'string_a') OR
                 ($a == 'string_b') OR
                 ($a == 'string_c')
                );
   var_dump($active); // Prints TRUE;
?>
于 2012-09-17T08:49:03.267 回答