Aprilwine Posté 20 Septembre 2004 Partager Posté 20 Septembre 2004 Aie! Je ne peux pas resoudre ce prob... J'ai une variable PHP qui est certainement un tableau. Je l'ai testée; je l'ai vérifié. Et quand je la passe à la fonction each(), on me renvoit cet erreur "Warning: Variable passed to each() is not an array or object." Mon code: print(is_array($deletables)); //Renvoit '1' (vrai). while ($item = each($deletables)) { //L'erreur!!!!! $children = _AT_mysql_query("SELECT * FROM `ib` WHERE `parent` = '{$item["value"]}'"); while ($child = _AT_mysql_fetch_array($children)) { $deletables = $child["id"]; } } Je suis absolument certain que la variable est un tableau. J'utilise print_r et j'en vois le contenu. Qu'est-ce que je peux faire???? Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 20 Septembre 2004 Partager Posté 20 Septembre 2004 En utilisant un foreach, ca te fait pareil ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 20 Septembre 2004 Partager Posté 20 Septembre 2004 Aprilwine, On utilise typiquement each() avec list(), comme ceci: <?php $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $val\n"; } /* Outputs: a => apple b => banana c => cranberry */ ?> Sinon, comme le suggère petit ourson, utilises foreach() Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
Aprilwine Posté 22 Septembre 2004 Auteur Partager Posté 22 Septembre 2004 Bah, c'était une faute assez idiote de ma part... ...j'ai oublié les crochets dans une instruction dans la boucle, alors: print(is_array($deletables)); //Renvoit '1' (vrai). while ($item = each($deletables)) { //L'erreur!!!!! $children = _AT_mysql_query("SELECT * FROM `ib` WHERE `parent` = '{$item["value"]}'"); while ($child = _AT_mysql_fetch_array($children)) { $deletables = $child["id"]; } } bien que $deletables soit de type tableau à la première itération de la boucle, cela ne sera pas le cas à la deuxième, à cause de l'instruction $deletables = $child["id"];, qui aurait dû être $deletables[] = $child["id"]. Voilà! Et oui, je suis d'accord que l'on utilise habituellement list() avec each(), mais il ne faut pas, et en ce qui me concerne je ne préfère pas introduire trop de variables étrangères à mon code. La fonction each() renvoit un tableau qui contient [0] => clef, ["key"] => clef, [1] => valeur, et ["value"] => valeur, ce qui me sert bien. Merci tout le même de vos conseils! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant