235 votes

Vérifier si un tableau est vide

J'ai le code suivant

<?php

$error = array();
$error['something'] = false;
$error['somethingelse'] = false;

if (!empty($error))
{
    echo 'Error';
}
else
{
    echo 'No errors';
}

?>

Cependant, empty($error) revient toujours true même si rien n'est réglé.

Qu'est-ce qui ne va pas ?

414voto

ioseb Points 7009

Il y a deux éléments dans le tableau et cela ne veut absolument pas dire que le tableau est vide. Comme solution de contournement rapide, vous pouvez faire ce qui suit :

$errors = array_filter($errors);

if (!empty($errors)) {
}

array_filter() Le comportement par défaut de la fonction supprimera toutes les valeurs du tableau qui sont égales à null , 0 , '' o false .

Sinon, dans votre cas particulier empty() retournera toujours true s'il y a au moins un élément même avec une valeur "vide".

70voto

brenjt Points 5992

Vous pouvez également le vérifier en faisant .

if(count($array) > 0)
{
    echo 'Error';
}
else
{
    echo 'No Error';
}

16voto

WagnerVaz Points 1125

Essayez de vérifier sa taille avec sizeof si 0 aucun élément.

15voto

Rhuidean Points 912

La fonction intégrée de PHP vide() La fonction vérifie si la variable est vide, nulle, fausse ou une représentation de zéro. Elle ne renvoie pas true juste parce que la valeur associée à une entrée du tableau est fausse, dans ce cas le tableau contient des éléments réels et c'est tout ce qui est évalué.

Si vous souhaitez vérifier si une condition d'erreur particulière est réglée sur vrai dans un tableau associatif, vous pouvez utiliser la fonction array_keys() pour filtrer les clés dont la valeur est définie sur true.

$set_errors = array_keys( $errors, true );

Vous pouvez ensuite utiliser la fonction empty() pour vérifier si ce tableau est vide, en vous indiquant simultanément s'il y a des erreurs et quelles erreurs se sont produites.

5voto

Pekka 웃 Points 249607

Cependant, empty($error) renvoie toujours true, même si rien n'est défini.

Ce n'est pas comme ça que empty() œuvres. Selon le manuel il retournera vrai sur un vide uniquement. Toute autre solution n'aurait pas de sens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X