簡體   English   中英

PHP 為什么我的“if”語句總是給出 TRUE?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM