2012-07-22 71 views
1

我相信我对PHP中的isset函数有些困惑。我试图用这个函数来确定一个表单中的一个字段是null ......我在isset函数检查一个字段是否有值的印象之下......但我相信isset函数只确定传递给它的东西是否存在。PHP isset函数

例如。

如果我有一个名称属性设置为“日”的表单输入字段。我会使用isset($_GET['day']);来确定表单输入字段是否不是null?或者isset只是检查'天'是否存在,并没有检查它通过的值?

任何帮助将是伟大的! 谢谢!

+1

'isset'不是函数,而是语言结构 – galymzhan 2012-07-22 05:19:58

回答

5

从PHP isset()页:

[isset()函数确定]如果一个变量被设置,而不是NULL。

这意味着:

$var1; 
$var2 = NULL; 
$var3 = 0; 
$var4 = 'test'; 
isset($var1); //false 
isset($var2); //false 
isset($var3); //true; note that if($var3) still returns false 
isset($var4); //true 
isset($var0); //false 

综上所述该位在那里,isset()返回FALSE如果变量未设置(因此函数名)或者包含NULL作为值。要使isset()返回true,必须同时存在变量并包含实际值(包含布尔值false)。

对于$_GET['day']的情况,您可以使用isset()来检查一个值是否已经实际传递给它(即它不为空)。

+1

是的,但如果输入为空,它实际上会传递一个空字符串'''',所以'isset'将返回true,并且您必须使用'empty'来检查。 – 2012-07-22 04:54:55

+0

好点。但据我所知,空字段的默认行为是根本不发送'$ _GET'变量。 – Palladium 2012-07-22 04:56:35

+0

我不确定,但也许你是对的。我个人使用'empty'而不是'isset',因为我经常使用Ajax和javascript来获取输入值,所以即使它是空的,我也会发送它。 – 2012-07-22 05:03:04

3

Isset只是检查是否定义了一个变量。使用empty知道它是否为空或未定义或类似的东西。

if(!empty($_GET['day'])) 
    //Stuff 
+0

或者您可以使用!= null。 – 2012-07-22 04:17:49

+0

好吧,所以如果你单独访问表单动作,isset函数总是会计算为false - 例如,如果我在post.php中有动作,并且只是在浏览器中输入了post.php,它将评估为false。它评估真实的唯一方法是如果表单被发布并且名称值被设置为输入字段?感谢所有的回应:) – 2012-07-23 05:33:24

+0

正确。但是,不要使用isset来检查您的访问者是否来自您的其他页面,因为任何人都可以使用导致您的页面post.php的相同输入名称来伪造一个表格。但它阻止他们直接访问页面,为true。 – 2012-07-23 05:50:20

0

绝对正确,isset()函数只是检查变量'day'是否存在。为了检查值是否存在或者是空的,你必须使用empty()函数。