我对OR
php
运算符的输出感到惊讶
$a = 5;
echo $b = ((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);
它回显5但我希望NULL
答案 0 :(得分:5)
应该是这样的。
$a = 5;
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);
答案 1 :(得分:3)
如你所说,你的$a
不是8或2.所以假设它是5。
您的评估如何运作:
((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);
intval($a) == 8
。|| 2
导致true
(非零数字松散等于true
)intval($a) != 0
- 导致为真。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
更改为|| intval($a) == 2
答案 2 :(得分:2)
更改此
intval($a) == 8 || 2
到
intval($a) == 8 || intval($a) == 2
即
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);
答案 3 :(得分:2)
在PHP中无法编写OR的比较方式。使用以下代码。
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);