web-dev-qa-db-ja.com

すべての配列項目が空かどうかを確認するPHP

フォームからアイテムの配列を追加していますが、それらがすべて空の場合、検証を実行してエラー文字列に追加します。ので、私は持っています:

$array = array(
    'RequestID'       => $_POST["RequestID"],
    'ClientName'      => $_POST["ClientName"],
    'Username'        => $_POST["Username"],
    'RequestAssignee' => $_POST["RequestAssignee"],
    'Status'          => $_POST["Status"],
    'Priority'        => $_POST["Priority"]
);

そして、すべての配列要素が空の場合、次を実行します。

$error_str .= '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>';
72
Matt

組み込みの array_filter を使用できます

コールバックが提供されない場合、FALSE(ブールへの変換を参照)に等しい入力のすべてのエントリが削除されます。

これを簡単な1行で実行できます。

if(!array_filter($array)) {
    echo '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>';
}
153
xzyfer

空の接着剤で配列を分解し、結果の文字列のサイズを確認します。

<?php if (strlen(implode($array)) == 0) echo 'all values of $array are empty'; ?>
17
Capsule

古い質問ですが、上記にリストされていないため、ソリューションにポップすると思いました。

function isArrayEmpty($array) {
    foreach($array as $key => $val) {
        if ($val !== '')
            return false;
    }
    return true;
}
7
mulquin

あなたは本当にそれを必要としません。
これらのフィールドを個別に検証し、このプロセスを完了することにより、配列が空であったか(または無効な値が含まれているか、同じであるか)わかります。

3

この方法の使用を簡素化します。

$array = []; //target array
$is_empty = true; //flag

foreach ($array as $key => $value) {
    if ($value != '')
        $is_empty = false;
}
if ($is_empty)
    echo 'array is empty!';
else
    echo 'array is not empty!';
0
Mehran Nasr

$ arrayの定義が正しくなく、一重引用符が含まれています。次のようになります。

$array = array( 'RequestID' =>  $_POST["RequestID"],
                'ClientName' => $_POST["ClientName"],
                'Username' => $_POST["Username"],
                'RequestAssignee' => $_POST["RequestAssignee"],
                'Status' => $_POST["Status"],
                'Priority' => $_POST["Priority"] );
0
qbert220