我有一个表单,在提交表单时输出以下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()
认为它已设置并进行处理我告诉它。
如何检查该字段是否真的为空?例如Field110
和Field111
应为空,但我的PHP脚本认为它们已设置。
if (isset($_GET["Field110"])) {
array_push($apnsarray, "E02");
}
if (isset($_GET["Field111"])) {
array_push($apnsarray, "E03");
}
答案 0 :(得分:6)
使用empty()
if(!empty($_GET['Field110'])){
array_push($apnsarray, "E02");
}
// etc...
答案 1 :(得分:2)
如何查看该字段是否真的为空?
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)