web-dev-qa-db-fra.com

Qu'entend-on par un nombre après "casser" ou "continuer" en PHP?

Quelqu'un pourrait-il expliquer, avec des exemples, ce que l'on entend par boucle break 2 ou continue 2 en PHP? Qu'est-ce que cela signifie lorsque break ou continue est suivi d'un nombre?

50
kn3l
$array = array(1,2,3);
foreach ($array as $item){
  if ($item == 2) {
    break;
  }
  echo $item;
}

renvoie "1" car la boucle était cassée pour toujours, avant que l'écho ne puisse imprimer "2".

$array = array(1,2,3);
foreach ($array as $item){
  if ($item == 2) {
    continue;
  }
  echo $item;
}

les sorties 13 car la deuxième itération était passée

$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
  foreach ($letters as $char){
    if ($char == "C") {
      break 2; // if this was break, o/p will be AB1AB2AB3
    }
    echo $char;
  }
  echo $num;
}

affiche AB en raison de break 2, ce qui signifie que les deux déclarations ont été cassées assez tôt. Si ce n'était que break, la sortie aurait été AB1AB2AB3.

$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
  foreach ($letters as $char){
    if ($char == "C") {
      continue 2;
    }
    echo $char;
  }
  echo $num;
}

affichera ABABAB, en raison de continue 2: la boucle externe sera passée à chaque fois.

En d'autres termes, continue arrête l'exécution de l'itération en cours mais permet à une autre de s'exécuter, tandis que break arrête complètement l'instruction entière.
Nous pouvons donc dire que continue s'applique uniquement aux boucles, tandis que break peut être utilisé dans d'autres instructions, comme switch.

Un nombre représente le nombre d'instructions imbriquées affectées.
s'il y a 2 boucles imbriquées, break dans la boucle intérieure cassera la boucle intérieure (mais cela n'a pas beaucoup de sens car la boucle intérieure sera relancée à la prochaine itération de la boucle extérieure) . break 2 dans la boucle intérieure cassera les deux.

85

Le nombre indique simplement "combien d'étendues il faut sauter"

<?php
for($i = 0; $i < 10; ++$i) {
    for($j = 0; $j < 10; ++$j) {
        break 2;
    }
}

$ i et $ j seront 0

Pour citer le manuel:

continue accepte un argument numérique facultatif qui lui indique le nombre de niveaux de boucles englobantes qu'il doit sauter jusqu'à la fin.

il en va de même pour la pause.

33
edorian

break accepte un argument numérique optionnel qui lui indique le nombre de structures englobantes imbriquées à séparer.

<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}

/* Using the optional argument. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* Exit only the switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* Exit the switch and the while. */
    default:
        break;
    }
}
?>

Plus d'exemples de rupture

continue accepte un argument numérique facultatif qui lui indique le nombre de niveaux de boucles englobantes qu'il doit ignorer jusqu'à la fin. La valeur par défaut est 1, sautant ainsi à la fin de la boucle actuelle.

<?php
while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // skip odd members
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer<br />\n";
    while (1) {
        echo "Middle<br />\n";
        while (1) {
            echo "Inner<br />\n";
            continue 3;
        }
        echo "This never gets output.<br />\n";
    }
    echo "Neither does this.<br />\n";
}
?>

Plus d'exemples de continuer

9
Somnath Muluk

break: casse la boucle la plus interne (sortie de la boucle)

break 2: casse les 2 boucles de niveau d'imbrication (sortie des 2 boucles imbriquées)

continue: force la boucle pour la prochaine itération d'où elle est utilisée sans exécuter le reste du code de boucle

continuer 2: forcer la boucle pour la prochaine 2 itération d'où elle est utilisée sans exécuter le reste du code de la boucle

quitter la boucle lorsque nous rencontrons $array valeur à 5

 break
    $array(4,5,8);
    for ($i=0 ;$i < 10 $i ++)
    {
        if ($array[$i]==5)
        {
          break;
        }
    }

pause (n)

Quittez les deux boucles lorsque nous rencontrons la valeur 5 dans $ array;

for ($i=0 ;$i < 10 $i ++)
  {
    for($j=0; $j <10; $j++)
     {
            if ($array[$i][$j]==5)
            {
              break 2;
            }
     }
 }

continuer

Imprime le message lorsque la valeur est 5;

for($i=0; $i<10; $i++)
{
   if ($array[$i] != 5)
   { 
     continue;// will reach at the first line from here which is for($i=0;.....
   }
   echo 'This is five';
}

}

3
Shakti Singh