php逻辑运算符'或'不同数据类型之间

时间:2016-11-05 06:23:22

标签: php

<?php

 $sample = (False or 436);
 echo $sample;
?>

我尝试使用此代码来识别并了解运算符优先级对代码的影响。但我对我得到的答案感到困惑。

 <?php

 $sample = (False or 436);
 echo $sample;
?>

给出答案为1

<?php

 $sample = (True or 436);
 echo $sample;
?>

也提供1

 <?php

 $sample = False or 436;
 echo $sample;
?>

什么都没有。

我可以看到or旁边的任何内容,答案是1

P.S。我在http://sandbox.onlinephpfunctions.com/这个在线编辑器上尝试过它们。

我需要知道它背后的实际概念。

3 个答案:

答案 0 :(得分:1)

这背后的原因是运营商优先级。如果删除括号,则赋值$sample = false优先于or 436函数。结果是echo false,它不输出任何内容。这就是为什么你在大多数情况下应该使用||运算符。

更多信息:http://php.net/manual/en/language.operators.precedence.php

答案 1 :(得分:1)

您可能希望阅读PHP Type Comparison Tables以及Booleans documentation。请特别注意Fred Koschara在顶部注释中的注释,这解释了OR运算符的优先级低于赋值运算符。您可能希望使用||而不是OR,作为||运算符执行相同的操作,但具有更高的优先级。

答案 2 :(得分:0)

由于我得到的所有答案,我可以在一个答案中找到我发布的内容。我认为这可能会有所帮助。

 <?php 
  $var1 = TRUE; 
  $var2 = FALSE; 
  $var3 = 123;


  $x = (int)$var2 or $var3;
  echo $x;// $x assigned to $var2 and type cast into int-display 0

  $y = ($var2 or $var3);
  echo $y;//operation inside the () returns true. so it prints 1

  $n = ($var2 or $var2);
  echo $n;//operation inside the () returns false.It concider as NULL. display nothing
  echo (int)$n;//print numerical value for false-0

  $z = $var2;
  echo $z;//returns 0. It is considered as NULL. so display nothing

 ?>

这是我真正期望的确切答案。感谢。