OR和||之间有什么区别PHP中的运算符?

时间:2012-09-17 08:38:15

标签: php operators

  

可能重复:
  Logical Operators, || or OR?

我一直认为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;
?>

为什么会这样?

3 个答案:

答案 0 :(得分:4)

唯一的区别是运营商优先级,请参阅Operator precedence||的优先级高于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分配给活动,然后执行第一个OR的右侧部分。

答案 1 :(得分:2)

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

答案 2 :(得分: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;
?>