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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow