syntaxe php [RESOLU] - PHP - Programmation
Marsh Posté le 21-12-2007 à 18:30:06
"while" utilisé de cette manière là teste la nouvelle valeur de la variable situé à gauche du "=" ("$row" dans le cas présent).
Tant qu'il y a des données à lire dans le résultat de la requête, "mysql_fetch_assoc" retourne un tableau. "$row" contient donc un tableau ce qui est compris comme un "TRUE" (vrai) par le "while" et il fait un tour de plus.
Quand il ne reste plus rien à lire, "mysql_fetch_assoc" retourne le booléen "FALSE". "$row" contient alors cette valeur ce qui fait que le "while" arrête de boucler et on passe à la suite du code (la fin du code dans le cas présent).
PS : C'est la même chose avec les autres boucles, les "if", ...
Marsh Posté le 21-12-2007 à 18:39:43
donc dans tout les cas, "while ($a);" verifie si $a est egal à "true" ?
quel procédé permet de faire en sorte que le tableau renvoi true au lieu des données qu'il contient ?
Est-ce dependant de la fonction qui recoit les valeurs ou est ce qu'une règle generale se degage de ca ?
ps: merci de ta reponse rapide =))
Marsh Posté le 21-12-2007 à 18:46:12
C'est une règle générale qui est expliqué dans la doc de php : http://www.php.net/manual/fr/langu [...] an.casting
A noter que même si un tableau vide et un objet vide sont traduit comme "FALSE" quand on les transforme (explicitement ou implicitement) en booléen, ils ne sont pas égaux si on les compare l'un à l'autre (je ne sais plus lequel est supérieur à l'autre) C'est une autre règle de php qui est expliqué, de mémoire, ailleurs dans la documentation.
Marsh Posté le 21-12-2007 à 18:20:56
Bonjour,
dans le code suivant, je n'arrive pas a comprendre quelle condition est réellement testée par le "while"...
====
code php
====
$sql = "SELECT id as userid, fullname, userstatus
FROM sometable
WHERE userstatus = 1";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}
====
fin du code
====
est-ce quela condition est respéctée uniquement si $row contient autre chose que "false" ?
Le code viens de http://www.manuelphp.com , je n'ai pas pris la peine de le commenter, si ca vous choque dites-le moi.
merci d'avance...
Message édité par wrksx le 21-12-2007 à 18:50:28