输入值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代码读取的值不为空?
下面的事情被认为是空的:
"" (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(小狗)。 – HolyMackerel 2013-03-22 13:24:13
的PHP将它们视为空:
null
0
""
"0"
false
所以,你有两个选择。附加一些东西给它,如价值a0
或,使用isset
。
它将始终在提交时设置,虽然,对吧? – HolyMackerel 2013-03-22 13:24:35
是的...对,你需要在那里纠正它。 – 2013-03-22 13:25:26
检查$value === null
if ($value === null && in_array($key, $required_fields) === true) {
你有没有试过'NULL'测试? – 2013-03-22 13:27:15