我想了解这之间的区别:为什么我需要php中的isset()函数?
if (isset($_POST['Submit'])) {
//do something
}
和
if ($_POST['Submit']) {
//do something
}
在我看来,如果$ _POST [“提交”]变量是真的,那么它被设置。为什么在这种情况下需要使用isset()函数?
我想了解这之间的区别:为什么我需要php中的isset()函数?
if (isset($_POST['Submit'])) {
//do something
}
和
if ($_POST['Submit']) {
//do something
}
在我看来,如果$ _POST [“提交”]变量是真的,那么它被设置。为什么在这种情况下需要使用isset()函数?
因为
$a = array("x" => "0");
if ($a["x"])
echo "This branch is not executed";
if (isset($a["x"]))
echo "But this will";
(也http://hk.php.net/manual/en/function.isset.php和http://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting见),如果它存在,并且不为空,否则为假
isset将返回TRUE。
你基本上想检查$ _POST []变量是否已经被提交,不管值是什么。如果您不使用isset(),某些提交如submit=0
将会失败。
在第二个示例中,如果该密钥未设置为$_POST
,PHP将发出通知(在E_NOTICE
或更严格)。
代码
if($_POST['Submit'])
{
//some code
}
不会WAMP工作(工作在XAMPP)
上WAMP,你将不得不使用
if (isset($_POST['Submit'])) {
//do something
}
尝试。 :)
这听起来更像是默认错误处理设置,然后是操作系统。 – alex 2010-03-17 14:03:17
如果用户不输入值,$ _ POST []返回NULL,我们在isset的描述说:”如果它存在,并且不为空,否则为假
isset将返回TRUE。 ,但在这里isset返回真正的 “
所以我应该总是在像这些情况下使用isset函数? – zeckdude 2010-03-17 07:59:35
尝试访问'$ a [“x”]''也会在'$ a'内没有定义关键字'x'的情况下产生'E_Notice'。使用'isset'或'array_key_exists'检查可以避免这种情况。 – Gordon 2010-03-17 08:38:12
@Chris:总是使用'isset'来检查某个变量的*存在*。 – kennytm 2010-03-17 09:07:33