狀況大概是這樣: 一個字串變數的可能值是 ABCD...YZ 26個英文大寫字母。是 ADE...YZ 的時候,執行 if 裡的條件;是 B 或 C 的時候,要執行 else 裡的條件式。

一開始的想法是寫成不是 B 或 C 的時候去找 if


$a = "A";
if ( !( ($a == "B") || ($a == "C") ) ):
    echo "OK";
else:
    echo "XX";
endif;

到這邊沒問題。後來想要把 ! 丟進去,所以變成:


$a = "A";
if ( ($a != "B") && ($a != "C") ):
    echo "OK";
else:
    echo "XX";
endif;

到這裡也沒問題。後來想說那能不能這樣子寫:


$a = "A";
if ( $a != ("B" || "C") ):
    echo "OK";
else:
    echo "XX";
endif;

結果就爆炸了。

然後就用了 var_dump() 來幫助自己理解問題在哪裡。找了半天發現問題在於 ("B"||"C") 的結果: bool(true) 。XDD

最後重新看一遍,發現問題在於一開始的想法:「不是 B 或 C 」,其實是「不是 B 也不是 C 」…


Tags: php if else not or var_dump 不是 或 也不是


創作者介紹
創作者 repeat :D 的頭像
repeat :D

旅行的記憶

repeat :D 發表在 痞客邦 留言(2) 人氣()