输入值0 =空?

输入值0 =空?

问题描述:

我有,你注册你的狗的网页,我想需要所有这些字段:输入值0 =空?

$required_fields = array('name', 'age', 'gender', 'breed', 'size'); 
foreach ($_POST as $key => $value) { 
    if (empty($value) && in_array($key, $required_fields) === true) { 
     $errors[] = 'All fields marked with * are required.'; 
     break 1; 
    } 
} 

的问题是,如果有人进入0(这是我指导他们做的,如果狗是一个小狗),提交似乎读取该字段为空(给我这个错误)。我进一步检查删除任何没有整数等,但最好的解决方案和最简单的形式为用户,我仍然认为他们能够输入0作为一个值。无论如何,有什么办法可以让我的PHP代码读取的值不为空?

+0

你有没有试过'NULL'测试? – 2013-03-22 13:27:15

the manual

下面的事情被认为是空的:

"" (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) 

你可以考虑修复是做somethng这样的:

if ((empty($value) && $value != 0) && in_array($key, $required_fields) === true) { 
+0

是的,这是我所希望的不会是这样的情况,但我想我必须接受它,因为所有来源似乎都指出了这一点。谢谢你的回答,我想我可以通过不需要年龄来解决问题,如果它是空的,将它设置为0(小狗)。 – HolyMackerel 2013-03-22 13:24:13

的PHP将它们视为空:

null 
0 
"" 
"0" 
false 

所以,你有两个选择。附加一些东西给它,如价值a0或,使用isset

+0

它将始终在提交时设置,虽然,对吧? – HolyMackerel 2013-03-22 13:24:35

+0

是的...对,你需要在那里纠正它。 – 2013-03-22 13:25:26

检查$value === null

if ($value === null && in_array($key, $required_fields) === true) {