狀況大概是這樣: 一個字串變數的可能值是 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 」…
全站熱搜
留言列表