首先,這條線,這裏將總是評估爲true,因爲你使用的是單=
這是一個assignment operator:
if($dangerous = 'yes') // this will always be true
您需要使用==
用於比較運算符,或===
用於嚴格比較,同時也考慮變量類型和值。 For more info on the difference between the comparison operators, see here.
你現在這樣做的方式是相當廣泛的使用,但不是最佳實踐。您的變量$dangerous
將每一次設置,你需要檢查它的值,以確定是否評估你的條件或不:
if($dangerous == 'yes') {
// do dangerous stuff
}
更好的做法,正如你所說的,是使用一個布爾變量,其將評估爲真或假(例如以上在此同樣的試驗將評估爲真在這兩種情況下):
$dangerous = true; // or false;
if($dangerous) {
// do dangerous stuff
}
同樣地,如果它不是危險:
if(!$dangerous) {
// pretty safe, but this will evaluate to true for false, null, zero etc
}
在這個例子中,!$dangerous
的值爲true時$dangerous
是零,零等,所以如果你需要的假值進行嚴格比較,則需要在===
比較操作:
if($dangerous === false) {
// false evaluates to true when comparing for a false value
// false evaluates to false when comparing for a null value
}
更好大多數情況下在結果的字符串表示中使用布爾變量。但要記住的一點是,如果你的布爾變量表示函數調用的返回值,它可能並不總是一致的。
我希望這只是僞代碼,因爲是,它無效,PHP和意志除了'危險內容'以外,不要說任何其他內容,因爲你在執行任務('='),而不是相等性測試('==')。 –