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?
$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.
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.
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;
}
}
?>
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";
}
?>
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';
}
}