我與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