Explication sur le for each
Résolu/Fermé
artragis
Messages postés
481
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
6 avril 2010
-
2 mars 2009 à 18:19
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 3 mars 2009 à 12:03
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 3 mars 2009 à 12:03
A voir également:
- Explication sur le for each
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
- Idm for mac - Télécharger - Téléchargement & Transfert
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
4 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
3 mars 2009 à 11:12
3 mars 2009 à 11:12
Bonjour,
Simple, par "for each" il faut comprendre "pour chaque élément de mon tableau". Même principe qu'une boucle for normale donc, mise à par que la syntaxe est différente, ainsi que l'utilisation du tableau pour récupérer chaque résultat (équivalent à la récupération d'un élément i dans ton tableau)
Pour ce qui est de l'explication de "plus vite", je dirai que lorsque tu utilise une boucle for, tu tente à l'intérieur (c'est ton cas) d'accéder plusieurs fois à un objet situé à un indice i de ton tableau. Faire plusieurs fois l'accès à cet élément prend plus de temps que si tu référence cet élément par une variable, ce qui semble être le cas du foreach (comme en java finalement, créer une référence sur un objet situé dans un tableau permettra d'y accéder plus rapidement si on y fait appel plusieurs fois par la suite.
Bien sur, sur des algos relativement simple la différence ne se voit pas, c'est sur des choses complexes, avec plusieurs de ces boucles qu'au final tu peux avoir un petit gain de temps. Mais tout bon programmeur se doit d'optimiser au mieux n'importe quel programme ^^
Simple, par "for each" il faut comprendre "pour chaque élément de mon tableau". Même principe qu'une boucle for normale donc, mise à par que la syntaxe est différente, ainsi que l'utilisation du tableau pour récupérer chaque résultat (équivalent à la récupération d'un élément i dans ton tableau)
if(isset($_POST['titre'])){ $titre=$_POST['titre']; $ancien_nom=$_POST['nom_du_groupe']; // --- Avec for for($j=1; $j<$numero_groupe;$j++){ if($groupe[$j]['titre']==$ancien_nom){ $groupe[$j]['titre']=$titre; } } // --- Avec foreach foreach($groupe as $oneGroup){ if ($oneGroup['titre']==$ancien_nom){ $oneGroup['titre'] = $titre; } } }
Pour ce qui est de l'explication de "plus vite", je dirai que lorsque tu utilise une boucle for, tu tente à l'intérieur (c'est ton cas) d'accéder plusieurs fois à un objet situé à un indice i de ton tableau. Faire plusieurs fois l'accès à cet élément prend plus de temps que si tu référence cet élément par une variable, ce qui semble être le cas du foreach (comme en java finalement, créer une référence sur un objet situé dans un tableau permettra d'y accéder plus rapidement si on y fait appel plusieurs fois par la suite.
Bien sur, sur des algos relativement simple la différence ne se voit pas, c'est sur des choses complexes, avec plusieurs de ces boucles qu'au final tu peux avoir un petit gain de temps. Mais tout bon programmeur se doit d'optimiser au mieux n'importe quel programme ^^
artragis
Messages postés
481
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
6 avril 2010
146
3 mars 2009 à 11:56
3 mars 2009 à 11:56
Merci de ton explication qui est très complète, je reviens sur la syntaxe pour savoir si j'ai vraiment bien compris les choses :
je met foreach( 'le tableau que je parcours' as 'une nouvelle variable'){
la suite de mon code, ici une condition pour récupérer
}
en somme ça voudrait dire qu'en fait la boucle à analysé 1 à 1 les éléments, les as stocké au fur et à mesure dans ma nouvelle variable et on n'a plus qu'à faire le test
si j'ai bien compris la variable contient ici les indices (donc groupe 0, 1, 2, 3....i)
alors que si j'avais demandé foreach(tableau[2] as 'ma viariable')
il aurait mis uniquement les élément de la partie associative du tableau?
Est-ce que j'ai vraiment bien compris?
je met foreach( 'le tableau que je parcours' as 'une nouvelle variable'){
la suite de mon code, ici une condition pour récupérer
}
en somme ça voudrait dire qu'en fait la boucle à analysé 1 à 1 les éléments, les as stocké au fur et à mesure dans ma nouvelle variable et on n'a plus qu'à faire le test
si j'ai bien compris la variable contient ici les indices (donc groupe 0, 1, 2, 3....i)
alors que si j'avais demandé foreach(tableau[2] as 'ma viariable')
il aurait mis uniquement les élément de la partie associative du tableau?
Est-ce que j'ai vraiment bien compris?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
3 mars 2009 à 11:58
3 mars 2009 à 11:58
Oui c'est ça.
Pour ce qui est de ta dernière remarque, normalement c'est le cas également (variable[2] as newVariable)
A toi ensuite de faire attention au type de donnée contenu dans ta variable pour la suite de ton code.
Pour ce qui est de ta dernière remarque, normalement c'est le cas également (variable[2] as newVariable)
A toi ensuite de faire attention au type de donnée contenu dans ta variable pour la suite de ton code.
artragis
Messages postés
481
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
6 avril 2010
146
3 mars 2009 à 12:03
3 mars 2009 à 12:03
Merci beaucoup de tout m'avoir expliqué. Ne t'inquiète pas, n'étant que débutant je ne stocke dans les tableaux que les variables que je contrôle vraiment (elles sont prédéfinies dans un menu déroulant, dans l'interface par exemple)