今天我遇到了一個問題,(我設法解決)。但是,我不明白爲什麼這樣。PHP開關狀態捕捉不匹配的條件
我有一個這樣的開關狀態:
switch($message['approval_status']){
case self::APPROVED:
$state['approved'] = true;
break;
// other irrelevant conditions
default:
break;
}
凡
const APPROVED = 2
我在2個變量傳遞,
如果我要與
兩次使用此功能,一旦$message['approval_status'] = 1
另一個與
$message['approval_status'] = true
上面的switch語句按照預期傳遞整數,即轉到默認條件。但是,具有$message['approval_status'] = true
的變量被case self::APPROVED:
捕獲,即使self::APPROVED = 2
爲什麼會這樣?
所以,沒有'==='開關這樣的事情? –
這是正確的參見:http://stackoverflow.com/questions/3525614/make-switch-use-comparison-not-comparison-in-php –
爲什麼它會轉換爲布爾雖然?這是一個int與bool測試,不應該將bool轉換爲int嗎? –