continue skips the rest of one loop pass, while break exits the loop.

loop control `continue` jumps to the next pass, and `break` jumps out of the loop.

Break and Continue

stopAt
break_continue.php
Replay: real traced execution (multi-file project)
<?php
$stopAt = 4;
$total = 0;
$visited = 0;

for ($number = 1; $number <= 6; $number++) {
    if ($number === 2) {
        continue;
    }
    if ($number === $stopAt) {
        break;
    }
    $total += $number;
    $visited++;
}

echo "stopAt=" . $stopAt . "\n";
echo "total=" . $total . "\n";
echo "visited=" . $visited . "\n";
<?php
$stopAt = 3;
$total = 0;
$visited = 0;

for ($number = 1; $number <= 6; $number++) {
    if ($number === 2) {
        continue;
    }
    if ($number === $stopAt) {
        break;
    }
    $total += $number;
    $visited++;
}

echo "stopAt=" . $stopAt . "\n";
echo "total=" . $total . "\n";
echo "visited=" . $visited . "\n";
<?php
$stopAt = 6;
$total = 0;
$visited = 0;

for ($number = 1; $number <= 6; $number++) {
    if ($number === 2) {
        continue;
    }
    if ($number === $stopAt) {
        break;
    }
    $total += $number;
    $visited++;
}

echo "stopAt=" . $stopAt . "\n";
echo "total=" . $total . "\n";
echo "visited=" . $visited . "\n";
  1. $stopAt ← 4, $total ← 0, $visited ← 0

    1<?php2$stopAt→ 4 = 4; //@stopAt=3, 63$total→ 0 = 0;4$visited→ 0 = 0;
  2. $total ← 1, $visited ← 1

    pass 1 of 4
    6for ($number1 = 1; $number <= 6; $number++) {7    if ($number === 2) {8        continue;9    }10    if ($number === $stopAt) {11        break;12    }13    $total→ 1 += $number1;14    $visited→ 1++;15}
    All 4 passes — pass 1 is the card above
    pass$number$stopAt$total$visited
    110 10 1
    22
    331 41 2
    444
  3. if ($number === 2)

    6for ($number = 1; $number <= 6; $number++) {7    if ($number2 === 2) {8        continue;9    }
  4. if ($number === $stopAt)

    9}10if ($number4 === $stopAt4) {11    break;12}
  5. echo "stopAt=" . $stopAt . " ";

    17echo "stopAt=" . $stopAt4 . "\n";18echo "total=" . $total4 . "\n";19echo "visited=" . $visited2 . "\n";
    outputstopAt=4
    total=4
    visited=2
  1. $stopAt ← 3, $total ← 0, $visited ← 0

    1<?php2$stopAt→ 3 = 3;3$total→ 0 = 0;4$visited→ 0 = 0;
  2. $total ← 1, $visited ← 1

    pass 1 of 3
    6for ($number1 = 1; $number <= 6; $number++) {7    if ($number === 2) {8        continue;9    }10    if ($number === $stopAt) {11        break;12    }13    $total→ 1 += $number1;14    $visited→ 1++;15}
    All 3 passes — pass 1 is the card above
    pass$number$stopAt$total$visited
    110 10 1
    22
    333
  3. if ($number === 2)

    6for ($number = 1; $number <= 6; $number++) {7    if ($number2 === 2) {8        continue;9    }
  4. if ($number === $stopAt)

    9}10if ($number3 === $stopAt3) {11    break;12}
  5. echo "stopAt=" . $stopAt . " ";

    17echo "stopAt=" . $stopAt3 . "\n";18echo "total=" . $total1 . "\n";19echo "visited=" . $visited1 . "\n";
    outputstopAt=3
    total=1
    visited=1
  1. $stopAt ← 6, $total ← 0, $visited ← 0

    1<?php2$stopAt→ 6 = 6;3$total→ 0 = 0;4$visited→ 0 = 0;
  2. $total ← 1, $visited ← 1

    pass 1 of 6
    6for ($number1 = 1; $number <= 6; $number++) {7    if ($number === 2) {8        continue;9    }10    if ($number === $stopAt) {11        break;12    }13    $total→ 1 += $number1;14    $visited→ 1++;15}
    All 6 passes — pass 1 is the card above
    pass$number$stopAt$total$visited
    110 10 1
    22
    331 41 2
    444 82 3
    558 133 4
    666
  3. if ($number === 2)

    6for ($number = 1; $number <= 6; $number++) {7    if ($number2 === 2) {8        continue;9    }
  4. if ($number === $stopAt)

    9}10if ($number6 === $stopAt6) {11    break;12}
  5. echo "stopAt=" . $stopAt . " ";

    17echo "stopAt=" . $stopAt6 . "\n";18echo "total=" . $total13 . "\n";19echo "visited=" . $visited4 . "\n";
    outputstopAt=6
    total=13
    visited=4

Skip Two and Stop at Four

  1. The loop starts at 1 and can run through 6.
  2. When $number is 2, continue skips the add.
  3. When $number is 4, break stops the loop.
  4. Only 1 and 3 are added, so total is 4.
  5. $visited is 2 because two values were added. | Number | Action | Total | | --- | --- | --- | | 1 | add | 1 | | 2 | continue | 1 | | 3 | add | 4 | | 4 | break | 4 |

Exercise: break_continue.php

Use continue to skip 2, break at a stop value, and print total and visited count