0

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

Field109=E01&Field112=E05&Field209=输入+消息+这里%21&Field110=&Field111=&Field113=&Field114=&Field115=&Field116=&Field117=&Field118=&Field119=&Field120=&CreatedBy=public&DateCreated=2013-01-145+08%=3A43% 14&IP=98.246.50.81&HandshakeKey=

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

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

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

3 回答 3

6

采用empty()

if(!empty($_GET['Field110'])){
    array_push($apnsarray, "E02");
}
// etc...
于 2013-01-17T16:56:57.273 回答
2

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

empty()

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

因此,在您的情况下isset(),根据上面的定义返回 true。而是empty()用于需要值的值。

于 2013-01-17T16:57:09.003 回答
0

那么,可能的值是多少?如果它可能有一个 0 并且只有一个 0,我会推荐这个:

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

但如果它只包含字母或非 0 的东西:

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

这是来自empty()文档:

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)

空的()

于 2013-01-17T16:58:25.543 回答