2010-03-17 56 views
10

我想了解这之间的区别:为什么我需要php中的isset()函数?

if (isset($_POST['Submit'])) { 
    //do something 
} 

if ($_POST['Submit']) { 
    //do something 
} 

在我看来,如果$ _POST [“提交”]变量是真的,那么它被设置。为什么在这种情况下需要使用isset()函数?

回答

15

因为

$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.phphttp://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting见),如果它存在,并且不为空,否则为假

+0

所以我应该总是在像这些情况下使用isset函数? – zeckdude 2010-03-17 07:59:35

+2

尝试访问'$ a [“x”]''也会在'$ a'内没有定义关键字'x'的情况下产生'E_Notice'。使用'isset'或'array_key_exists'检查可以避免这种情况。 – Gordon 2010-03-17 08:38:12

+0

@Chris:总是使用'isset'来检查某个变量的*存在*。 – kennytm 2010-03-17 09:07:33

4

isset将返回TRUE。

3

你基本上想检查$ _POST []变量是否已经被提交,不管值是什么。如果您不使用isset(),某些提交如submit=0将会失败。

1

在第二个示例中,如果该密钥未设置为$_POST,PHP将发出通知(在E_NOTICE或更严格)。

另请参阅this question on Stack Overflow

+0

不是'E_STRICT'; 'E_NOTICE'。 – janmoesen 2010-03-17 07:39:04

+0

啊欢呼声,谢谢。 – alex 2010-03-17 14:02:16

0

代码

 

if($_POST['Submit']) 
{ 
//some code 
} 
 

不会WAMP工作(工作在XAMPP)
上WAMP,你将不得不使用

 

if (isset($_POST['Submit'])) { 
    //do something 
} 
 

尝试。 :)

+1

这听起来更像是默认错误处理设置,然后是操作系统。 – alex 2010-03-17 14:03:17

0

如果用户不输入值,$ _ POST []返回NULL,我们在isset的描述说:”如果它存在,并且不为空,否则为假

isset将返回TRUE。 ,但在这里isset返回真正的 “

相关问题