爲什麼這個打印錯誤。是因爲month是字符串而true是布爾值?爲什麼這在php中等於false
$month = "string";
if ($month === true) {
echo "true";
} else {
echo "false";
}
爲什麼這個打印錯誤。是因爲month是字符串而true是布爾值?爲什麼這在php中等於false
$month = "string";
if ($month === true) {
echo "true";
} else {
echo "false";
}
當使用'==='時,您正在按值和按類型進行比較。由於$month = 'string';
明顯是字符串類型,因此它不等於布爾型true
,因此表達式計算結果爲false。
要使它輸出「真」,以取代「===」操作符「==」
下面就來這裏SO一個question它概括起來鏈接很好
===
是比較運營商的價值和類型,所以$month
必須是boolean
(當然也true
)。是嗎?
您應該使用$month == true
(將僅比較值,無論哪種類型),或者簡單if($month)
(如不存在幾個月,可能是0)
是。
==用於比較,但使用===(注意額外的'='符號)也將檢查數據的類型。 因爲$ month包含一個字符串,並且您將它與一個布爾值進行比較,它將返回false。
當你使用==時,它會返回true。
如果您還沒有聲明$ month變量,則在條件時間。那麼$ month將是未定義的,'==='true將始終返回false。
任何針對$ month的測試都將返回false,除了'is_null()'將提供一個'E_NOTICE'並返回true,'empty()'將返回true –
忽略上述註釋的「E_NOTICE」部分,如果運行未聲明的變量,該測試將觸發'E_NOTICE'。 –
是否定義了$月? – Daan
你還期望什麼? – Rikesh
閱讀友好手冊 - http://www.php.net/manual/en/language.operators.comparison.php - 它的解釋非常明確 –