假設$postcode
來自任一個或$POST
$GET
,它始終是一個字符串。 !is_null()
會,因此是假的,不管:
php> var_dump(is_null(""))
#=> bool(false)
你可以恢復使用empty()
,這是比較寬鬆的。但是,當涉及到這些檢查時,PHP是完全不一致和奇怪的。例如,empty()
也將返回FALSE
。對。
php> $postcode = "";
php> var_dump(empty($postcode))
#=> bool(true)
php> $postcode = 0;
php>var_dump(empty($postcode))
#=> bool(true)
更好的方法,就是做某種「duck-typing」。在你的情況下:當它可以轉換爲數值時,就這樣做並使用它。然後將其留給語言以確定它認爲「數字 - 伊什」足以進行轉換。
php> var_dump((int) "")
int(0)
php> var_dump((int) "13")
int(13)
所以:
else if(($postcode = (int) $postcode) && ($postcode > 0)) {
}
而在去年,題外話:警告對您的業務假設的謹慎:郵政編碼並不總是數值。是的,在美國大部分都是。但也有越來越多的國家在那裏(說這是一個歐盟公民誰上臺方式過於頻繁有關的網站,假定每個人都是普通美國公民)
你從服務器獲得什麼樣的錯誤呢? – Ranjith
您發佈的代碼很好,除了第二行末尾沒有分號。就像@Ranjith說的那樣,你會得到什麼錯誤? – Seer