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>';
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>';
}
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'; ?>
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;
}
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)
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!';
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"] );