Comportement de if($array) en PHP
Castor
-
Bilow Messages postés 1014 Date d'inscription Statut Membre Dernière intervention -
Bilow Messages postés 1014 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais faire un test sur une variable de retour d'une fonction qui renvoi un tableau d'enregistrements si tout s'est bien déroulé et false s'il y a eu une erreur.
Je fais donc un test de la sorte : if($variable_de_retour) { mon traitement }
Cependant, si tout s'est bien déroulé MAIS que le tableau est vide (et donc qu'il n'y a aucun enregistrement), il me passe dans le else, comme s'il y avait eu une erreur.
Mon tableau est défini mais est vide, théoriquement il devrait passer dans le if non ?
Merci pour vos réponses :)
J'aimerais faire un test sur une variable de retour d'une fonction qui renvoi un tableau d'enregistrements si tout s'est bien déroulé et false s'il y a eu une erreur.
Je fais donc un test de la sorte : if($variable_de_retour) { mon traitement }
Cependant, si tout s'est bien déroulé MAIS que le tableau est vide (et donc qu'il n'y a aucun enregistrement), il me passe dans le else, comme s'il y avait eu une erreur.
Mon tableau est défini mais est vide, théoriquement il devrait passer dans le if non ?
Merci pour vos réponses :)
A voir également:
- Comportement de if($array) en PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- If exist ✓ - Forum Autoit / batch
- The realtek network controller was not found. if deep sleep mode is enabled please plug the cable ✓ - Forum Pilotes (drivers)
- Nous suspectons un comportement automatisé sur votre compte instagram ✓ - Forum Instagram
8 réponses
Un test sur un tableau true ou false ne veut rien dire. Si tu fais un test sur une variable, tu test le contenu de ta variable. SI le tableau a été crée le test sera bon et ira au else parce que ta variable qui contient ton tableau n'est pas vide. Même si ton tableau, lui, est vide
Merci pour l'explication mais je n'ai pas tout saisi.
Tu me dis que le test sur la variable sera bon parce que la variable n'est pas vide, malgré que le tableau le soit.
Mais c'est l'inverse qui se produit. C'est à dire que bien que la variable soit définie et mon tableau vide, il se comporte comme si ma variable n'était pas définie.
Tu me dis que le test sur la variable sera bon parce que la variable n'est pas vide, malgré que le tableau le soit.
Mais c'est l'inverse qui se produit. C'est à dire que bien que la variable soit définie et mon tableau vide, il se comporte comme si ma variable n'était pas définie.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
si j'ai bien compris soit ça s'est bien passé et ta variable est un tableau (vide ou non) soit ça s'est mal passé et ta variable vaut false, c'est ça?
si l'on raisonne logiquement, tu veux savoir si ta variable est un tableau ou non => if(is_array($variable_de_retour))
Bonne journée
si j'ai bien compris soit ça s'est bien passé et ta variable est un tableau (vide ou non) soit ça s'est mal passé et ta variable vaut false, c'est ça?
si l'on raisonne logiquement, tu veux savoir si ta variable est un tableau ou non => if(is_array($variable_de_retour))
Bonne journée
Bonjour
Pour tester si une variable est vraiment false en php, penser aux comparaisons === et !== qui comparent non seulement la valeur mais aussi le type :
Pour tester si une variable est vraiment false en php, penser aux comparaisons === et !== qui comparent non seulement la valeur mais aussi le type :
if($variable_de_retour !== false) { traitement }
Salut,
Si tu as un tableau, et que tu souhaites s'il est vide ou non, alors il faut utiliser sizeof() :
sizeof() renvoi (pour un tableau) le nombres d'entrées présentes. Si c'est 1, 2, 3 et plus, dans un if cela revient à "true", et 0 correspond à "false".
Edit : Ce que tu veux faire, c'est avoir un traitement d'une variable, et :
- Si elle vaut "false", passer au 'else'
- Si elle vaut un tableau vide, passer au 'else'
- Si elle vaut un tableau non vide, alors rester dans le if
Toutefois if($variable) suffit pour le même traitement.
A toi de voir ! ;)
Si tu as un tableau, et que tu souhaites s'il est vide ou non, alors il faut utiliser sizeof() :
if( sizeof($tableau) ){ echo "Le tableau n'est pas vide !"; } else echo "Tableau vide";
sizeof() renvoi (pour un tableau) le nombres d'entrées présentes. Si c'est 1, 2, 3 et plus, dans un if cela revient à "true", et 0 correspond à "false".
Edit : Ce que tu veux faire, c'est avoir un traitement d'une variable, et :
- Si elle vaut "false", passer au 'else'
- Si elle vaut un tableau vide, passer au 'else'
- Si elle vaut un tableau non vide, alors rester dans le if
if($variable || ( is_array($variable) && sizeof($variable) )){ echo "Tableau non vide"; } else{ echo "False ou tableau vide"; }
Toutefois if($variable) suffit pour le même traitement.
A toi de voir ! ;)