HTTP GET:检查var是否为空

时间:2013-01-17 16:55:32

标签: php variables get isset

我有一个表单,在提交表单时输出以下http字符串:

  

Field109 = E01&安培; Field112 = E05&安培; Field209 =输入+的+消息+此处%21安培; Field110 =安培; Field111 =安培; Field113 =安培; Field114 =安培; Field115 =安培; Field116 =安培; Field117 =安培; Field118 =安培; Field119 =安培; Field120 =安培; CreatedBy =公共&安培; dateCreated会= 2013年1月17日+ 08%3A43%3A45&安培; ENTRYID = 14&安培; IP = 98.246.50.81&安培; HandshakeKey =

在我处理提交的PHP脚本中,我检查每个Field以查看它是否已设置。 问题是,正如您在上面所看到的,如果表单中的字段在提交时为空,它仍然保留在HTTP字符串中,isset()认为它已设置并进行处理我告诉它。

如何检查该字段是否真的为空?例如Field110Field111应为空,但我的PHP脚本认为它们已设置。

if (isset($_GET["Field110"])) {
    array_push($apnsarray, "E02");
}
if (isset($_GET["Field111"])) {
    array_push($apnsarray, "E03");
}

3 个答案:

答案 0 :(得分:6)

使用empty()

if(!empty($_GET['Field110'])){
    array_push($apnsarray, "E02");
}
// etc...

答案 1 :(得分:2)

  

如何查看该字段是否真的为空?

empty()

isset() 确定变量是否已设置且不是NULL 。而empty()将检查值为空

所以在你的情况下,isset()通过上面的定义返回true。而是将empty()用于需要值的值。

答案 2 :(得分:0)

嗯,有什么可能的值? 如果它可能有0而且只有0,我建议这样:

if(isset($_GET['Field110']) && strlen(trim($_GET['Field110']) != 0) {
    // not empty
}

但如果它只是由字母或不是0的东西组成:

if(!empty($_GET['Field110'])) {
    //not empty
}

这是来自empty() doc:

The following things are considered to be empty:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

empty()