繁体   English   中英

PHP OR运算符给出错误结果?

[英]Php OR operator gives wrong result?

我对phpOR运算符的输出感到惊讶

$a = 5;

echo $b = ((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);

它回显5但我期望为NULL

应该是这样

$a = 5;

echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);

如您所述,您的$a不是8或2。所以假设它是5。

您的评估方式:

((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);

  1. 比较intval($a) == 8
  2. 无论您从#1得到什么,都要做|| 2 || 2导致true (非零数字大致等于true
  3. 比较intval($a) != 0得出true。
  4. 比较true && true => true
  5. 答案是$a

一步步:

 (intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL;
 (false || 2) && intval($a) != 0 ? $a : NULL);
 (false || true) && intval($a) != 0 ? $a : NULL;
 true && intval($a) != 0 ? $a : NULL;
 true && true ? $a : NULL;
 $a;

TL; DR

要获取NULL ,请更改|| 2 || 2|| intval($a) == 2 || intval($a) == 2

改变这个

intval($a) == 8 || 2

intval($a) == 8 || intval($a) == 2

echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);

在PHP中无法编写OR的比较方式。 使用下面的代码。

echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM