Control Flow Details
Break and Continue
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
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";
$stopAt ← 4, $total ← 0, $visited ← 0
1<?php2$stopAt→ 4 = 4; //@stopAt=3, 63$total→ 0 = 0;4$visited→ 0 = 0;$total ← 1, $visited ← 1
pass 1 of 46for ($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$visited1 1 — 0 → 1 0 → 1 2 2 — — — 3 3 — 1 → 4 1 → 2 4 4 4 — — if ($number === 2)
6for ($number = 1; $number <= 6; $number++) {7 if ($number2 === 2) {8 continue;9 }if ($number === $stopAt)
9}10if ($number4 === $stopAt4) {11 break;12}echo "stopAt=" . $stopAt . " ";
17echo "stopAt=" . $stopAt4 . "\n";18echo "total=" . $total4 . "\n";19echo "visited=" . $visited2 . "\n";outputstopAt=4 total=4 visited=2
$stopAt ← 3, $total ← 0, $visited ← 0
1<?php2$stopAt→ 3 = 3;3$total→ 0 = 0;4$visited→ 0 = 0;$total ← 1, $visited ← 1
pass 1 of 36for ($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$visited1 1 — 0 → 1 0 → 1 2 2 — — — 3 3 3 — — if ($number === 2)
6for ($number = 1; $number <= 6; $number++) {7 if ($number2 === 2) {8 continue;9 }if ($number === $stopAt)
9}10if ($number3 === $stopAt3) {11 break;12}echo "stopAt=" . $stopAt . " ";
17echo "stopAt=" . $stopAt3 . "\n";18echo "total=" . $total1 . "\n";19echo "visited=" . $visited1 . "\n";outputstopAt=3 total=1 visited=1
$stopAt ← 6, $total ← 0, $visited ← 0
1<?php2$stopAt→ 6 = 6;3$total→ 0 = 0;4$visited→ 0 = 0;$total ← 1, $visited ← 1
pass 1 of 66for ($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$visited1 1 — 0 → 1 0 → 1 2 2 — — — 3 3 — 1 → 4 1 → 2 4 4 — 4 → 8 2 → 3 5 5 — 8 → 13 3 → 4 6 6 6 — — if ($number === 2)
6for ($number = 1; $number <= 6; $number++) {7 if ($number2 === 2) {8 continue;9 }if ($number === $stopAt)
9}10if ($number6 === $stopAt6) {11 break;12}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
- The loop starts at
1and can run through6. - When
$numberis2,continueskips the add. - When
$numberis4,breakstops the loop. - Only
1and3are added, so total is4. $visitedis2because 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