프로그래밍 언어 & 프레임워크/PHP & Laravel

PHP: 반복문 (for, while)

for

모든 반복문의 기초는 for 문입니다. 최근 많은 언어에서 while 문은 제거하는 방향으로 가고있으나 for 문은 그 기반으로서 반복문을 이야할 때 꼭 사용되고 있습니다. 다만 키워드만 같을 뿐이고 내부 문법이 조금씩 다를 뿐이죠. 다른 언어와 마찬가지로 클래식for 문은 아래와 같고, 조건이 충족하는 순간까지 반복하게 됩니다. 아래의 코드는 배열의 길이만큼 반복을 하고 있습니다.

$messages = [
    'Hello, world',
    'Who are you?',
    'Bye'
];

for ($i = 0; $i < count($messages); $i++) {
    echo $messages[$i] . PHP_EOL;
}

foreach

배열과 같이 iterable 한 데이터는 foreach 문으로 돌릴 수 있습니다. 즉 iterator 인터페이스를 구현한 클래스가 이에 해당됩니다. as 키워드와 함께 사용합니다.

foreach ($messages as $key => $value) {
    echo $messages[$key] . PHP_EOL;
}

While

while 문은 for 문과 치환이 가능한 반복문이므로 주로 끝이 정해지지 않은 반복을 돌린다는 느낌으로 사용합니다. 서버를 돌린다거나, 무한정 대기한다거나 데이터의 끝이 어딘지 예측이 되지 않을 때 사용합니다. 물론 취향에 따라 for 문을 사용해도 상관없겠죠.

$i = 0;
while ($i < 10) {
    // -> 0 ~ 9
    echo $i++;
}

do ~ while

do ~ while 은 저는 거의 사용하지 않습니다. do 블럭을 먼저 실행하고 조건을 검사한다는 점이 while 문과의 차이점입니다. 필요성을 느낀 적은 딱히 없지만, 라우트 미들웨어와 같이 먼저 처리를 하고 결과 값을 기반으로 처리해야 한다면 나쁘지 않을지도 모릅니다.

$i = 0;
do {
    // -> 0 ~ 9
    echo $i++;
} while ($i < 10);

반복문 제어하기

반복문을 제어한다는 의미는 빠져나가거나 다시 돌아갈 수 있다는 이야기입니다. break 키워드는 반복문을 빠져나갈 때, 그리고 continue 키워드는 해당 키워드 아래의 로직은 무시하고 반복문으로 돌아갈 때 사용합니다. 다른 언어와의 조금의 차이점이라면 반복문이 중첩되어 사용되어 있는 경우 레벨을 적어 해당 레벨만큼 반복문을 빠져나가거나 돌아갈 수 있다는 점이죠.

$numbers = [ 2, 4, 6, 8, 10, 11, 14 ];

// -> 2, 4, 6, 7, 10
foreach ($numbers as $num) {
    if ($num % 2 === 0) {
        var_dump($num);
        continue;
    } 
    break;
}

더 읽을거리

PHP: 파일 분할 (include, require)

https://www.inflearn.com/course/php7-reboot

https://www.inflearn.com/course/php7-oop

PHP 카테고리 목차 및 문서 정리

2020년, PHP 언어가 가지는 의미

https://www.php.net/manual/en/