检查表单字段数组时,空函数不起作用

时间:2012-12-10 09:05:12

标签: php arrays

我有一个名为date_field[]的html文本框元素数组。表单中可能有多个字段。在提交表单以检查至少有一个文本框是否为空之后,我使用了 -

<?php
if(empty($_POST["date_field"])){
        echo "Is empty";
    }else{
        echo "is not empty";
    }
?>

无论我是填写还是填写is not empty,它都会回复date_field

P.S。如果我使用print_r

打印表单值

如果我没有放价值

[followup_date] => Array
        (
            [0] => 
        )

如果我放价值

[followup_date] => Array
        (
            [0] => 2012-12--14
        )

任何帮助都将受到高度赞赏

2 个答案:

答案 0 :(得分:4)

您的“空”数组包含空字符串:

array(0 => '')

那不是数组。唯一的“空”数组是array()

您可能希望通过array_filter运行它,这会删除评估为false的所有元素(也包括"0",请注意)。

答案 1 :(得分:2)

数组不为空,因为每个非禁用的表单字段将包含一个元素(即使这些字段为空)。

您可以使用@deceze提到的array_filter函数,但请记住,这也会删除一些人不会认为是空的元素。

因此,我宁愿自己运行数组,检查所有元素是否都是空的。例如:

function all_is_empty(array $subject)
{
    foreach($subject as $value)
        if(str_len($value) > 0)
            return false;
    return true;
}

用法:

if(all_is_empty($_POST["date_field"]))
{
    echo "Is empty";
}
else
{
    echo "is not empty";
}

如果这是我,我可能还会将此与检查所有字段都有效。因此,如果您知道该数组中的所有字段都应该是日期,请检查它们实际上是:)