web-dev-qa-db-fra.com

Vérifier si tous les éléments du tableau sont vides PHP

J'ajoute un tableau d'éléments à partir d'un formulaire et si tous sont vides, je veux effectuer une validation et ajouter à une chaîne d'erreur. Donc j'ai:

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

Et puis, si tous les éléments du tableau sont vides, effectuez:

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

Vous pouvez simplement utiliser le array_filter intégré

Si aucun rappel n'est fourni, toutes les entrées d'entrée égales à FALSE (voir conversion en booléen) seront supprimées.

Vous pouvez donc le faire en une seule ligne.

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

imploser le tableau avec une colle vide et vérifier la taille de la chaîne résultante:

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

Une question plus ancienne mais j'ai pensé ajouter ma solution car elle n'a pas été répertoriée ci-dessus.

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

vous n'en avez pas vraiment besoin.
Vous allez valider ces champs séparément et en terminant ce processus, vous pouvez dire si le tableau était vide (ou contient des valeurs invalides, ce qui est le même)

3
Your Common Sense

simplifiez l'utilisation de cette façon:

$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

Votre définition de $ array est incorrecte et comporte des guillemets simples. Il devrait se lire:

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