1

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

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

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

PS如果我使用打印表单值print_r

如果我没有把价值

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

如果我把价值

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

任何帮助将不胜感激

4

2 回答 2

4

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

array(0 => '')

这不是一个数组。唯一的“空”数组是array().

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

于 2012-12-10T09:07:33.813 回答
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";
}

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

于 2012-12-10T09:13:09.993 回答