我与OR
操作符的输出惊讶的php
PHP OR运算符给出错误结果?
$a = 5;
echo $b = ((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);
它呼应5,但我希望NULL
我与OR
操作符的输出惊讶的php
PHP OR运算符给出错误结果?
$a = 5;
echo $b = ((intval($a) == 8 || 2) && intval($a) != 0 ? $a : NULL);
它呼应5,但我希望NULL
正如你所说,你的$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
改变这种
intval($a) == 8 || 2
到
intval($a) == 8 || intval($a) == 2
即
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);
感谢您的回答:) – user1234
它应该是这样的。
$a = 5;
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);
感谢您的回答:) – user1234
您在PHP中编写比较OR的方式是不可能的。使用下面的代码。
echo $b = ((intval($a) == 8 || intval($a) == 2) && intval($a) != 0 ? $a : NULL);
感谢您的回答:) – user1234
你为什么想到NULL? –
因为我的$ a不是2而不是8 – user1234
一位老婆送她的程序员丈夫到店里:“拿一块面包,如果他们有鸡蛋,打一打。”丈夫带着十几块面包回来了。看到妻子生气的脸,他无辜地回应道:“什么?他们有鸡蛋!” - 人类语言和编程语言实际上并不一样。 '$ a == 8 || 2'表示'($ a == 8)|| 2'和'false || 2'是'1'(真理)。 – Amadan