1

say という名前の html textbox 要素の配列がありますdate_field[]。フォームには複数のフィールドが存在する場合があります。テキストボックスの少なくとも1つが空でないかどうかを確認するためにフォームを送信した後、私は -

<?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

無効化されていないフォーム フィールドごとに 1 つの要素が含まれるため、配列は空ではありません (それらのフィールドが空の場合でも)。

@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 に答える