Page 1 sur 1

Boucle foreach et "optimisation"

Posté : 22 févr. 2014, 14:01
par albertine
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 !

Re: Boucle foreach et "optimisation"

Posté : 22 févr. 2014, 14:57
par moogli
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) {
//
}
@+

Re: Boucle foreach et "optimisation"

Posté : 22 févr. 2014, 15:21
par albertine
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"

Posté : 22 févr. 2014, 17:15
par moogli
de rien ;)

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

merci


@+