假设$postcode
来自 a$POST
或$GET
,它总是一个字符串。!is_null()
因此将是 FALSE,无论:
php> var_dump(is_null(""))
#=> bool(false)
您可以恢复使用empty()
更自由的 using 。然而,当涉及到这些检查时,PHP 是完全不一致和奇怪的。例如,empty()
也将返回FALSE
0。是的。
php> $postcode = "";
php> var_dump(empty($postcode))
#=> bool(true)
php> $postcode = 0;
php>var_dump(empty($postcode))
#=> bool(true)
一个更好的方法是做某种“鸭式打字”。在您的情况下:当它可以转换为数值时,请执行此操作并使用它。然后将其留给语言来确定它认为“数字-ish”足以转换的内容。
php> var_dump((int) "")
int(0)
php> var_dump((int) "13")
int(13)
所以:
else if(($postcode = (int) $postcode) && ($postcode > 0)) {
}
最后,题外话:注意关于您的业务假设的警告:邮政编码并不总是数字。是的,在美国大多数是。但是那里有更多的国家(说这是欧盟公民,他们经常出现在假设每个人都是普通美国公民的网站上)