reminder

做對每一件小事,做對每一個細節,能夠做到一百分的事,就不要只做六十分敷衍過去。

一個人環島 - 楔子
10/07(三) Day 1 :台北→花蓮
10/08(四) Day 2 :花蓮→台東
10/09(五) Day 3 :台東→枋寮→南州→鳳山→高雄→鳳山
10/10(六) Day 4 :鳳山→高雄→二水→集集→車埕→台中
10/11(日) Day 5 :台中→新竹→竹東→內灣→竹東→新竹→板橋
未完待續…


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

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


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

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


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

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


<?php
$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 不是 或 也不是

Posted by repeat at 痞客邦 PIXNET Comments(2) Trackback(0) Hits(110)

open trackbacks list Trackbacks (0)

Comments (2)

Post Comment
  • switch ($a) {
    case 'A':
    // ...
    break;
    case 'B':
    // ...
    break;
    default:
    // ...
    break;
    }
  • 哈哈...想不到妳也會放這種..邏輯上的錯...
  • 沒學過的話犯這些錯很正常吧 @_@?

    repeatreplied on 2010/01/07 19:20

Comment Permissions: Allow commenting

Leave Comment

*帳號/暱稱
E-mail
Personal Website
Comment Title
*Comment
* Private Comment