PHP에서 continue 명령문
루프의 작동을 완전히 종료하는 break 명령문 외에도,
루프의 다음 반복을 시작하게 하는 continue 명령문이
있습니다. 이 명령문은 때로 코드를 단순화하는 데 유용할 수
있지만, 사실상 대부분의 문제는 이것 없이도 해결할 수
있습니다. 실용적인 예시를 살펴보겠습니다.
숫자 배열이 주어졌다고 가정해 봅시다.
이 배열을 루프로 순회하며, 2로 나누어지는
숫자는 제곱하여 화면에 출력하고, 3로 나누어지는
숫자는 세제곱하여 화면에 출력해 봅시다.
다음은 설명된 문제의 해결책입니다:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
echo $res;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
echo $res;
}
}
?>
보시다시피, echo $res 줄이 두 번
반복됩니다. 이 줄을 if 블록 밖으로
빼내어 보겠습니다.
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
}
echo $res; // 조건문 바깥으로 출력을 이동함
}
?>
그러나 이제 우리의 스크립트는 약간 다르게
작동합니다: 우리의 if 블록으로
처리되지 않은 일반 요소들에 대해서도
변수 $res를 화면에 출력하는
작업이 수행될 것이며, 이는 문제의 조건에
필요하지 않습니다.
이 문제를 해결하기 위해, 2와
3로 나누어지지 않는 요소에 대해
작동하는 else 조건을 if에
추가하고, 그 안에서 즉시 루프의 다음 반복으로
이동시키는 continue 명령문을
호출하겠습니다:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
} else {
continue; // 루프의 새 반복으로 이동
}
echo $res; // 2 또는 3으로 나누어질 경우에만 실행됨
}
?>
continue를 사용하여 홀수를 건너뛰고,
1부터 100까지의 짝수만
출력하는 루프를 작성하세요.