Co oznacza Liczba po "break" lub "continue" w PHP?

Czy ktoś mógłby wyjaśnić, z przykładami, co oznacza pętla break 2 LUB continue 2 w PHP? Co to znaczy, gdy po break lub continue następuje liczba?

Author: Somnath Muluk, 2011-03-02

4 answers

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

Wyświetla "1", ponieważ pętla została przerwana na zawsze, zanim echo było w stanie wydrukować "2".

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

Wyjścia 13 ponieważ druga iteracja została przekazana

$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;
}

Wyjście AB z powodu break 2, co oznacza, że obie wypowiedzi zostały złamane dość wcześnie. Gdyby to było tylko break, wynik byłby 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;
}

Wyświetli ABABAB, Ponieważ continue 2: zewnętrzna pętla będzie przekazywana za każdym razem.

Innymi słowy, continue zatrzymuje bieżące wykonanie iteracji, ale pozwala na uruchomienie innej, podczas gdy break zatrzymuje całą instrukcję całkowicie.
Możemy więc stwierdzić, że {[11] } ma zastosowanie tylko do pętli, podczas gdy break może być używane w innych instrukcjach, takich jak switch.

Liczba reprezentuje liczbę zagnieżdżonych poleceń , których dotyczy problem.
jeśli są 2 zagnieżdżone pętle, break w wewnętrznej złamie wewnętrzną (jednak ma to bardzo mały sens, ponieważ wewnętrzna pętla zostanie uruchomiona ponownie w kolejna iteracja pętli zewnętrznej). break 2 w wewnętrznej pętli złamie oba.

 76
Author: Your Common Sense,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 09:40:19

Liczba mówi tylko "ile lunet wyskoczyć"

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

$i I $j będą 0

Cytuję podręcznik:

Continue akceptuje opcjonalny argument liczbowy, który mówi mu, ile poziomów pętli powinna przeskoczyć na koniec.

To samo dotyczy przerwy.
 32
Author: edorian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 12:43:11

Break akceptuje opcjonalny argument liczbowy, który mówi, z ilu zagnieżdżonych struktur ma zostać rozdzielonych.

<?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;
    }
}
?>

więcej przykładów break

Continue akceptuje opcjonalny argument liczbowy, który mówi mu, ile poziomów pętli powinna przeskoczyć na koniec. Domyślną wartością jest 1, więc przeskakujemy do końca pętli prądowej.

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

więcej przykładów Kontynuuj

 9
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-09 09:57:48

Break: przerwij wewnętrzną pętlę most (wyjście z pętli)

Break 2: przerwanie 2 pętli poziomu zagnieżdżenia (wyjście z 2 zagnieżdżonych pętli)

Kontynuuj: Wymuś pętlę dla następnej iteracji, z której jest używana bez wykonywania reszty kodu pętli

Kontynuuj 2: Wymuś pętlę dla kolejnych 2 iteracji, z której jest używana bez wykonywania reszty kodu pętli

Wyjdź z pętli, gdy napotkamy $array wartość na 5

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

Break (n)

Wyjście z obu pętli, gdy spotkaj wartość 5 w $array;

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

Kontynuuj

Wyświetli komunikat, gdy wartość wynosi 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
Author: Shakti Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 12:59:48