[RESOLU] Boucle foreach et "optimisation"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Boucle foreach et "optimisation"

Re: Boucle foreach et "optimisation"

par moogli » 22 févr. 2014, 17:15

de rien ;)

si la réponse te va peux tu cliquer sur le bouton résolus à coté du titre stp;

merci


@+

Re: Boucle foreach et "optimisation"

par albertine » 22 févr. 2014, 15:21

Ah super, merci pour ta réponse. Non il n'y a pas que les clefs qui m'intéressent, c'était juste pour l'exemple !

Re: Boucle foreach et "optimisation"

par moogli » 22 févr. 2014, 14:57

salut,

pour répondre à ta question je te dirais que la doc de foreach dit clairement que cette fonction travail sur un tableau et "son pointeur" interne.

donc avec ton premier exemple php utilise array_key puis fait travailler le foreach sur le résultat.

Par contre coté lisibilité la seconde forme est mieux ;)

Dans la doc il y a un exemple avec array.

Le problème d'utiliser count dans la condition d'arrêt d'une boucle for c'est que la boucle for évalue la condition d'arrêt à chaque itération.
ce n'est pas le cas du foreach (la condition d'arrêt c'est le dernier élément du tableau et ça c'est traiter en interne).

Il n'y a que les clef qui t'intéresse ?

si ce n'est pas le cas utilise la récupération des clefs dans la syntaxe du foreach
<?php
$tab = ['id1'=>1,'id2'=>2]; // etc etc
foreach($tab as $index => $valeur) {
//
}
@+

Boucle foreach et "optimisation"

par albertine » 22 févr. 2014, 14:01

Bonjour,

Pouvez-vous me dire si quand on écrit par exemple :

Code : Tout sélectionner

$a = array('id1' => 'One', 'id2' => 'Two', 'id3' => 'Three'); foreach (array_keys($a) as $b) { echo $b; }
le array_keys() est interprété à chaque itération ? Et donc si il faut éviter d'écrire comme ça mais y préférer plutôt :

Code : Tout sélectionner

$a = array('id1' => 'One', 'id2' => 'Two', 'id3' => 'Three'); $keys = array_keys($a); foreach ($keys as $b) { echo $b; }
Comme avec la situation du count() dans une boucle for() en somme... À première vue je dirais non sinon la boucle ne pourrait pas être parcourue mais qui sait :?

Merci !