[英]PHP Why my 'if' statement always gives TRUE?
我一直在用 PHP 制作東西,一切都很好。 但今天我沒有得到這個聲明。 為什么總是真的?
if ($action != 1 || $action != 2) echo true; // TRUE for 0, 1, 2, 3
但相反的邏輯
if ($action == 1 || $action == 2) echo true; // FALSE for 0, 3 TRUE for 1, 2
第一個表情讓我大吃一驚。 我想我不明白一些非常非常基本的東西,不是在 PHP 中,而是在 Universe 中,所以我不明白。 我認為if (FALSE || TRUE) == FALSE
,但這不是第二個例子的情況。 它按預期工作。
那么,如何說的答案在哪里:“如果變量不是 1 OR 2 - echo true”。 我不明白為什么我的if ($var != 1 OR $var != 2) echo true;
不像我期望的那樣工作。
($action != 1 || $action != 2)
否定是($action == 1 && $action == 2)
。 你可以親眼看到后者總是假的,因為變量不能同時為 1 和 2。 因此,原始條件必然始終為真。
它正在工作,因為它必須工作。 請參閱文檔http://php.net/manual/en/language.operators.logical.php
$a || $b
$a || $b
返回TRUE或者$ a或$ b為真。
如果你像這樣嘗試,希望它會有意義,請參閱每一行的評論
$action = 0;
var_dump($action != 1 || $action != 2); //here (true || true)
$action = 1;
var_dump($action != 1 || $action != 2); //here (false || true)
$action = 2;
var_dump($action != 1 || $action != 2); //here (true || false)
$action = 3;
var_dump($action != 1 || $action != 2); //here (true || true)
條件 OR 將搜索第一個 TRUE 結果,您的代碼將始終給出 TRUE,因為任何值甚至都不是 1 或 2。從您的示例來看,如果$action = 1
那么條件$action != 2
將給出真,如果$action = 2
然后$action != 1
將給出 TRUE。
對於(如果變量不是 1 OR 2 - echo true)使用這個:
if(!in_array($action, array(1,2)) echo "true";
編輯:您也可以這樣檢查:
if(!($action == 1 || $action == 2)) echo "true";
if ($action == 2 || $action == 1) echo true; // FALSE for 0, 3 TRUE for 1, 2
按預期工作。 它基本上是“如果 $action 是 1 或 2,則回顯真”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.