Vos explications sont très claires. LE truc qui me dérangeait vraiment c’était plus le test de la condition de sortie. Vu l’écriture, j’ai l’impression que l’évaluation devrait être faite sur le retour de list (mais comme list est de type void, que nenni) ou sur le déploiment de cette espèce de macro qu’est list… enfin rien de tout ça… il faut considérer que c’est le retour de each qui est testé… mais il reste tout de même un point curieux : each retourne FALSE lorsqu’il arrive en fin de tableau, OK mais lorsque ce n’est pas la fin de tableau, each retourne un tableau et c’est lui qui est testé ???
En clair « while( $MyArray ) » ça fait bizarre, non ? (non non each ne retourne pas TRUE lorsque ça rulez)
[quote]La formulation qui te pose problème utilise des notions qui viennent du C et qui sont complétement absconses. En plus, la syntaxe utilise list() et each(), qui sont aussi des fonctions spéciales.
Ne te prends pas la tête avec ces fonctions, passe à autre chose.
Le php est un langage suffisamment riche et clair pour que tu puisses l’utiliser complétement sans utiliser les syntaxes les plus tordues. (héritées du C)
Je fais du PHP a haute dose depuis plus de deux ans, et je peux te dire que j’essaie de programmer proprement. Et bien figure-toi que je n’ai jamais utilisé cette fonction, à l’exception de l’exemple que tu as donné, et qui est très pratique.
Le Php est super pratique dans la gestion des tableaux. Il y a des pièges à éviter, des choses qu’on apprend avec le temps, après avoir pratiqué.
(par exemple l’egalité: je déconseille d’utiliser l’opérateur « == », je conseille plutôt « === », sauf dans les cas spécifiques bien entendu)
Bref, prends ton pieds avec ce langage, amuse toi, et seulement après, reviens à cette syntaxe pour essayer de la comprendre. Ou bien n’essaie pas de la comprendre, utilise-là telle quelle, elle est super pratique.
Ou alors, n’utilise pas cette fonction, il y a plein d’autres moyens de parcourir un tableau à n dimensions.[/quote]moi ca fait 6 mois que je pratique php, par contre je connaisais meme pas le « === »
honte a moi tu peut me renseigner,pourquoi c’est mieux ?
euh, sinon j’avais bon dans mes explication list est un trucs zarb mais pratique.
[quote]En plus, la syntaxe utilise list() et each(), qui sont aussi des fonctions spéciales.
Le php est un langage suffisamment riche et clair pour que tu puisses l’utiliser complétement sans utiliser les syntaxes les plus tordues. (héritées du C)[/quote]Dixit mon tit linux tout mignon:
lonewolf@bastion:~$ man 3 list
No entry for list in section 3 of the manual
lonewolf@bastion:~$ man 3 each
No entry for each in section 3 of the manual
La section 3 etant C Programming, je t’affirme que ca n’existe pas en C, ce genre de pirouette (je suis un peu comme Moktar, j’ai pas tres bien compris la bidouille… Il est fort, l’Universal_Tonton, avec ces algos terrifiants pour la joybase, hein ;))
La formulation qui te pose problème utilise des notions qui viennent du C et qui sont complétement absconses. En plus, la syntaxe utilise list() et each(), qui sont aussi des fonctions spéciales.
Ne te prends pas la tête avec ces fonctions, passe à autre chose.
Le php est un langage suffisamment riche et clair pour que tu puisses l’utiliser complétement sans utiliser les syntaxes les plus tordues. (héritées du C)
Je fais du PHP a haute dose depuis plus de deux ans, et je peux te dire que j’essaie de programmer proprement. Et bien figure-toi que je n’ai jamais utilisé cette fonction, à l’exception de l’exemple que tu as donné, et qui est très pratique.
Le Php est super pratique dans la gestion des tableaux. Il y a des pièges à éviter, des choses qu’on apprend avec le temps, après avoir pratiqué.
(par exemple l’egalité: je déconseille d’utiliser l’opérateur “==”, je conseille plutôt “===”, sauf dans les cas spécifiques bien entendu)
Bref, prends ton pieds avec ce langage, amuse toi, et seulement après, reviens à cette syntaxe pour essayer de la comprendre. Ou bien n’essaie pas de la comprendre, utilise-là telle quelle, elle est super pratique.
Ou alors, n’utilise pas cette fonction, il y a plein d’autres moyens de parcourir un tableau à n dimensions.
[quote]Mhhh oui je me prends la tête mais c’est pour bien comprendre le fonctionnement de l’interpréteur et non pas avoir une recette de cuisine
Dans l’exemple suivant, le second list n’est pas suivi de ‹ = › ;), l’un de vous peut-il décrire pas à pas le comportement de l’expression « while( cond ) ». Le contenu je m’en fou, je cherche à voir comment PHP se démerde.
while( list($key, list($k, $term, $tcount))=each($ar) )
{
if (empty($k)) continue;
echo « $term »;
echo $tcount;
echo « »;
}[/quote]
facile, on a each qui va retourne une ligne du tableau $ar (puis va la suivante), sauf que ici la ligne du tableau $ar est plus compliqué que tout a l’heure car elle contient une variable toute simple + un autre tableau
donc pour foutre tout ce bordel dans des variables
il faut utiliser list($key, list($k, $term, $tcount))=each($ar)
ce qui equivaut a
$v = each($ar)
$key=$v[0];
$k = $v[1][0];
$term = $v[1][1];
$tcount = $v[1][2];
peux tu me dire si mon explication precedente t’as servi?
sinon pour ton cas:
while( list($key, list($k, $term, $tcount))=each($ar) )
C’est identique. Ce qui te perturbe c’est que les valeur de variable du premier tableau, qui aurait été $var dans l’exemple precedent est aussi un tableau.
Mhhh oui je me prends la tête mais c’est pour bien comprendre le fonctionnement de l’interpréteur et non pas avoir une recette de cuisine
Dans l’exemple suivant, le second list n’est pas suivi de ‹ = › :D, l’un de vous peut-il décrire pas à pas le comportement de l’expression « while( cond ) ». Le contenu je m’en fou, je cherche à voir comment PHP se démerde.
en fait tu te prends la tete a cause de list, list n’est pas vraiment une fonction (pas de valeur de retour et un = obligatoire derriere) c’est un « raccourci » qui te permets d’assigner plein de variable en meme temps.
c’est donc bien each qui est testé
alors OK ou KO ?
et use c’est pas grave t’as juste contribué a l’embrouille totale qui regne sur ce thread
McGuffin> On ne se comprend pas, c’est clair (et pas la peine de t’énerver et merci pour le nombre de neurones que tu m’as attribué). J’essaie de décomposer et d’interpréter tel que PHP va le faire (pour comprendre la mécanique) mais là je ne vois pas.
Il est écrit dans la doc PHP que le while se comporte de la même manière qu’en C et que les expression sont évaluées de la droite vers la gauche (normal quoi :D) et bien avec ces deux règles je n’arrive pas à “éclater” le fameux while…
Engy> je suis d’accord, j’essaie juste d’éclater l’expression contenu dans le while
[quote] while ( list($key, $val) = each($_POST) )[/quote]Un programmeur C lirait while ( list($key, $val) == each($_POST) ) (syntaxe foireuse, je le sais mais c’est juste pour l’idée).
[/quote]
y doit y avoir confusion personne ne lirait ca comme ca
c’est juste que list est une fonction un peu speciale de php
sinon Moktar tout ce qu’il a savoir c’est que
1 - qd each($_post) retourne FALSE on entre pas dans la boucle.
2 - qd il retourne autre chose (un tableau) , list permet de mettre le contenu du tableau dans des variables et on entre dans la boucle.
je precise a tout hasard que en aucun cas les variables $key et $val ne sont testé.
[quote]Allons, calme-toi McGuffin, on ne va pas se prendre la tête pour un problème d’algo (ego ?), non ?[/quote]bien sur… passez du temps a rendre service on vous le rendra…
[quote]while ( list($key, $val) = each($_POST) )[/quote]Un programmeur C lirait while ( list($key, $val) == each($_POST) ) (syntaxe foireuse, je le sais mais c’est juste pour l’idée).
[quote]dis donc mon grand si tu prefere te moquer betement de ceux qui essaye de rebrancher les deux neurones qui te restent, dis le tout de suite.[/quote]Allons, calme-toi McGuffin, on ne va pas se prendre la tête pour un problème d’algo (ego ?), non ?
dis donc mon grand si tu prefere te moquer betement de ceux qui essaye de rebrancher les deux neurones qui te restent, dis le tout de suite.
regarde un peu mieux comment ca marche:
while ( list($key, $val) = each($_POST) )
ce qui est testé c’est (list($key, $val) = each($_POST)) ok?
c’est pas (list($key, $val))
tu vois mieux la?
je n’ai jamais dit que each affecte quoi que ce soit, mais renvoi une valeur de tableau qui est affecté a List().
une fois arrivé au bout du tableau il n’y a plus d’element a affecter, le while recoit un false et la boucle s’arrete.
j’espere que t’a compris parce que j’aime bien rendre service, mais y a des limites a la courtoisie.
[quote]le retour du each est utilisé pour l’affectation des variables bordel ! (dsl ) pas pour être testé comme condition du while[/quote]le each fait les deux…
le false est une reponse Null.
tant qu’il y a des valeurs dans le tableau le each renvoit les valeurs du tableau, puis deplace le pointeur de 1 (dans ce cas la reponse est necessaire TRUE puisque qu’il y a des valeur)
lorsque le each arrive en fin de tableau il renvoi False, et la boucle se termine.