[英]Php OR operator gives wrong result?
我对php
中OR
运算符的输出感到惊讶
$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);
intval($a) == 8
。 || 2
|| 2
导致true
(非零数字大致等于true
) intval($a) != 0
得出true。 true && true
=> true
$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.