PHP
Boucles
Recherche…
Introduction
Les boucles sont un aspect fondamental de la programmation. Ils permettent aux programmeurs de créer un code qui se répète pour un nombre donné de répétitions ou d' itérations . Le nombre d'itérations peut être explicite (6 itérations, par exemple) ou se poursuivre jusqu'à ce qu'une condition soit remplie («jusqu'à ce que l'enfer gèle»).
Cette rubrique couvre les différents types de boucles, leurs instructions de contrôle associées et leurs applications potentielles en PHP.
Syntaxe
- for (compteur d'initialisation, compteur de test, compteur d'incrémentation) {/ * code * /}
- foreach (array as value) {/ * code * /}
- foreach (tableau comme clé => valeur) {/ * code * /}
- while (condition) {/ * code * /}
- faire {/ * code * /} while (condition);
- anyloop {continue; }
- anyloop {[ anyloop ...] {continue int; }}
- anyloop {pause; }
- anyloop {[ anyloop ...] {break int; }}
Remarques
Il est souvent utile d'exécuter plusieurs fois le même bloc de code ou un bloc de code similaire. Au lieu de copier-coller des instructions presque égales, les boucles fournissent un mécanisme permettant d'exécuter du code un nombre de fois spécifique et de parcourir des structures de données. PHP supporte les quatre types de boucles suivants:
-
for
-
while
-
do..while
-
foreach
Pour contrôler ces boucles, les instructions continue
et break
sont disponibles.
pour
L'instruction
for
est utilisée lorsque vous savez combien de fois vous voulez exécuter une instruction ou un bloc d'instructions.
L'initialiseur est utilisé pour définir la valeur de départ du compteur du nombre d'itérations de boucle. Une variable peut être déclarée ici à cet effet et il est traditionnel de la nommer $i
.
L'exemple suivant itère 10 fois et affiche les nombres de 0 à 9.
for ($i = 0; $i <= 9; $i++) {
echo $i, ',';
}
# Example 2
for ($i = 0; ; $i++) {
if ($i > 9) {
break;
}
echo $i, ',';
}
# Example 3
$i = 0;
for (; ; ) {
if ($i > 9) {
break;
}
echo $i, ',';
$i++;
}
# Example 4
for ($i = 0, $j = 0; $i <= 9; $j += $i, print $i. ',', $i++);
Le résultat attendu est:
0,1,2,3,4,5,6,7,8,9,
pour chaque
L'instruction
foreach
est utilisée pour parcourir les tableaux.
Pour chaque itération, la valeur de l'élément de tableau en cours est affectée à la variable $value
et le pointeur de tableau est déplacé de un et l'élément suivant de l'itération suivante sera traité.
L'exemple suivant affiche les éléments du tableau affecté.
$list = ['apple', 'banana', 'cherry'];
foreach ($list as $value) {
echo "I love to eat {$value}. ";
}
Le résultat attendu est:
I love to eat apple. I love to eat banana. I love to eat cherry.
Vous pouvez également accéder à la clé / à l'index d'une valeur en utilisant foreach:
foreach ($list as $key => $value) {
echo $key . ":" . $value . " ";
}
//Outputs - 0:apple 1:banana 2:cherry
Par défaut, $value
est une copie de la valeur dans $list
. Par conséquent, les modifications apportées à l'intérieur de la boucle ne seront pas répercutées dans $list
par la suite.
foreach ($list as $value) {
$value = $value . " pie";
}
echo $list[0]; // Outputs "apple"
Pour modifier le tableau dans la boucle foreach
, utilisez l'opérateur &
pour affecter la $value
par référence. Il est important de unset
la variable par la suite afin que la réutilisation de $value
ailleurs n'écrase pas le tableau.
foreach ($list as &$value) { // Or foreach ($list as $key => &$value) {
$value = $value . " pie";
}
unset($value);
echo $list[0]; // Outputs "apple pie"
Vous pouvez également modifier les éléments du tableau dans la boucle foreach
en référençant la clé de tableau de l'élément en cours.
foreach ($list as $key => $value) {
$list[$key] = $value . " pie";
}
echo $list[0]; // Outputs "apple pie"
Pause
Le mot-clé
break
met immédiatement fin à la boucle en cours.
Semblable à l'instruction continue
, une break
arrête l'exécution d'une boucle. Contrairement à une instruction continue
, break
provoque toutefois l'arrêt immédiat de la boucle et n'exécute plus l'instruction conditionnelle.
$i = 5;
while(true) {
echo 120/$i.PHP_EOL;
$i -= 1;
if ($i == 0) {
break;
}
}
Ce code produira
24
30
40
60
120
mais n'exécutera pas le cas où $i
est 0, ce qui entraînerait une erreur fatale due à la division par 0.
L'instruction break peut également être utilisée pour séparer plusieurs niveaux de boucles. Un tel comportement est très utile lors de l'exécution de boucles imbriquées. Par exemple, pour copier un tableau de chaînes dans une chaîne de sortie, en supprimant tous les symboles #
, jusqu'à ce que la chaîne de sortie contienne exactement 160 caractères
$output = "";
$inputs = array(
"#soblessed #throwbackthursday",
"happy tuesday",
"#nofilter",
/* more inputs */
);
foreach($inputs as $input) {
for($i = 0; $i < strlen($input); $i += 1) {
if ($input[$i] == '#') continue;
$output .= $input[$i];
if (strlen($output) == 160) break 2;
}
$output .= ' ';
}
La commande break 2
met immédiatement fin à l'exécution des boucles internes et externes.
faire pendant
L'instruction
do...while
exécute un bloc de code au moins une fois - elle répète alors la boucle tant qu'une condition est vraie.
L'exemple suivant incrémentera la valeur de $i
au moins une fois et continuera à incrémenter la variable $i
tant qu'elle aura une valeur inférieure à 25;
$i = 0;
do {
$i++;
} while($i < 25);
echo 'The final value of i is: ', $i;
Le résultat attendu est:
The final value of i is: 25
continuer
Le mot-clé
continue
arrête l'itération en cours d'une boucle mais ne termine pas la boucle.
Tout comme l'instruction break
, l'instruction continue
est située dans le corps de la boucle. Lorsqu'elle est exécutée, l'instruction continue
provoque l'exécution d'un saut immédiat vers la condition conditionnelle.
Dans l'exemple suivant, la boucle imprime un message basé sur les valeurs d'un tableau, mais ignore une valeur spécifiée.
$list = ['apple', 'banana', 'cherry'];
foreach ($list as $value) {
if ($value == 'banana') {
continue;
}
echo "I love to eat {$value} pie.".PHP_EOL;
}
Le résultat attendu est:
I love to eat apple pie.
I love to eat cherry pie.
L'instruction continue
peut également être utilisée pour continuer immédiatement l'exécution à un niveau externe d'une boucle en spécifiant le nombre de niveaux de boucle à sauter. Par exemple, considérez des données telles que
Fruit | Couleur | Coût |
---|---|---|
Pomme | rouge | 1 |
banane | Jaune | 7 |
Cerise | rouge | 2 |
Grain de raisin | vert | 4 |
Afin de ne fabriquer que des tartes à partir de fruits qui coûtent moins de 5
$data = [
[ "Fruit" => "Apple", "Color" => "Red", "Cost" => 1 ],
[ "Fruit" => "Banana", "Color" => "Yellow", "Cost" => 7 ],
[ "Fruit" => "Cherry", "Color" => "Red", "Cost" => 2 ],
[ "Fruit" => "Grape", "Color" => "Green", "Cost" => 4 ]
];
foreach($data as $fruit) {
foreach($fruit as $key => $value) {
if ($key == "Cost" && $value >= 5) {
continue 2;
}
/* make a pie */
}
}
Lorsque l'instruction continue 2
est exécutée, l'exécution retourne immédiatement à $data as $fruit
continuer la boucle externe et ignorer tous les autres codes (y compris le conditionnel dans la boucle interne).
tandis que
L'instruction
while
exécute un bloc de code si et tant qu'une expression de test est vraie.
Si l'expression de test est vraie, le bloc de code sera exécuté. Une fois le code exécuté, l'expression test sera à nouveau évaluée et la boucle continuera jusqu'à ce que l'expression test soit fausse.
L'exemple suivant itère jusqu'à ce que la somme atteigne 100 avant de se terminer.
$i = true;
$sum = 0;
while ($i) {
if ($sum === 100) {
$i = false;
} else {
$sum += 10;
}
}
echo 'The sum is: ', $sum;
Le résultat attendu est:
The sum is: 100