2013-04-25 128 views
1

嗨,我看到一個代碼今天這樣PHP的switch語句和0

$i=0; 
switch($i){ 
    case 'TEST': print "Test";break; 
    case 0: print "0";break; 
} 

正常輸出似乎0但它打印Test。然後我嘗試瞭解它並得到了一個解決方案here。也就是說,比較數字和字符串時,字符串將轉換爲數字並進行數值比較。好吧,然後它可以得到輸出Test

但如果我設置相同,它像

$i=0; 
switch($i){ 
    case ($a === 'Test'): print "Text";break; 
    case ($a === 0): print "0";break; 
} 

這也給結果Test,所以我很困惑在這裏。如果我使用==而不是===,那麼它顯示爲空白。所以請澄清我。

+1

使用'開關(真)' as $ a ==='Test'等於true或false – Waygood 2013-04-25 09:43:09

+0

您將在switch語句中獲得寬鬆的鍵入比較 - '0!=='Test''但是'0 =='Test'' - 所以最好避免混合不同的數據類型 – 2013-04-25 09:46:54

+1

也是第一個例子0與'TEST'相比 - 'TEST'是一個等於0的字符串,導致匹配http://php.net/manual/en/language.operators.comparison.php'==='類型匹配太 – Waygood 2013-04-25 09:47:50

回答

0

您是否必須將$ i作爲數字? 讓它成爲字符串太...

$i="0"; 
switch($i){ 
    case 'Test': print "Text";break; 
    case '0': print "0";break; 
} 

,打印0 ...

0

交換機對待0false所以在這裏,你可以去:

$i=0; 
switch(true){ 
    case $i === 'TEST': print "Test"; 
     break; 
    case $i === 0 : print "0"; 
     break; 
}