PHP의 반복문 (for, while, do while, break, continue)

2019. 7. 25. 01:55 PHP/php

PHP의 반복문 (for, while, do while, break, continue)



조건문에 이어서 이번에는 반복문을 알아보자


PHP의 반복문은 크게 for문과 while문으로 구분되며, do while문을 사용할 수 있다.

그리고 반복문의 흐름을 제어하는 break와 continue 가 있다.


1. for 반복문


반복문의 for문은 강력하다. 루프로 들어갈 때 변수를 지정하고, 루프를 반복할 때 조건을 검사하고, 각 반복마다 변수를 변경하는 기능이 모두 있다.


for문에는 3개의 매개 표현식이 있다.


for(표현1; 표현2; 표현3)

- 표현1 : 초기화 표현식

- 표현2 : 조건 표현식

- 표현3 : 변경 표현식


<?php
 
    for($count = 1 ; $count <=12 ; $count++){         // $count 를 1로 초기화 하고
                                                                      // 12보다 작거나 같으면 반복한다.
                                                                     // 반복할때마다 $count를 1씩 증가시킨다.
        
       echo "$count times 12 is " . $count * 12;    // $count값에 따른 문장을 출력한다.
       echo "<br/>";                                        // 줄바꿈
                           
    }
  
?>


변수를 증가할 수 있다. 세 개의 매개 변수는 반드시 세미콜론(;)으로 구분한다.

이런 복잡한 방식은 잘 사용하지 않는다.


<?php
 
    for($i = 1, $j=1 ; $i + $j <10 ; i++, j++){         // $i와 $j 를 1로 초기화 하고
                                                                      //  $i + $j 가 10보다 작으면반복한다.
                                                                     // 반복할때마다 $i 와 $j를 1씩 증가시킨다
           // 로직 작성
                           
    }
  
?>

; $i = 1, $j = 1    // $i 와 $j의 초기화

; $i + $j < 10     // 탈출 조건

; $i++ , $j++      // 각 반복의 끝에 $i 와 $j를 변경

 



2. while 반복문


반복문을 실행하는 다른 방법으로 while문이 있다.

while문은 조건이 만족하면 계속 반복한다.


<?php
 
    $count = 0;                              //  $count 를 0으로 초기화 한다.
    
    while(++$count <= 12){             // $count 값을 1증가시키고 12보다 작거나 같은지 확인한다.
        
        // ++$count 값이 12보다 작거나 같으면 while문이 반복된다.
         echo "$count times 12 is ".$count*12."<br/>";     // $count를 대입하여 문자열 출력
        
    }
  
?>

while 문이 for 문보다 더 적합할 때는 언제인가? 조건문이 간단하고 규칙적인 변수에 기인하지 않을 때다. 예를 들면, 특별한 입력이나 오류를 체크하고, 오류가 발생했을 때 반복문을 빠져나와야 하면 while 문 사용을 권한다.


3. do while 반복문


while 반복문을 조금 변형하면 코드가 먼저 실행되고 조건을 나중에 검사하는 do while 문이 된다.

반복문이 먼저 한번 실행됨으로 인하여 반 조건이 되는 변수의 초기값이 달라짐에 유의하자.


<?php
 
    $count = 1;                              //  $count 를 1로 초기화 한다.
    
    do{
        
        echo "$count times 12 is ".$count*12."<br/>";     // $count를 대입하여 문자열 출력
        
    }while(++$count <= 12);    // $count 값을 1증가시키고 12보다 작거나 같은지 확인한다.
                                         // ++$count 값이 12보다 작거나 같으면 while문이 반복된다.
  
?>

4. break ; 반복문 빠져나가기


switch 문이 빠져나오는 것과 똑같이 break 명령어를 사용해 반복문을 빠져나온다.


<?php
 
    $fp = fopen("text.txt"'wb');       // text.txt 파일 오픈 후 $fp 에 포인터 반환
    
    for($j =0 ; $j <100 ; ++$j){            // $j를 0으로 초기화 후 for문 100번 반복
        
        $written = fwrite($fp"data");    // 반복시마다 "data"를 text.txt에 쓰고 
                                                   // $written에 제대로 쓰여진 문자의 개수를 대입한다.
        if(!$writtenbreak;                 // 파일에 쓰는데 오류가 있어 FALSE를 반환시, for문을 빠져나온다.
        
     }
  
     fclose($fp);                               // 오픈한 text.txt 파일을 닫는다.
 
?>


코드에서 빠져나와야 하는 곳이 한 단계 이상 깊은 레벨로 구성돼 있을 때 다음과 같이 몇 개의 레벨을 나가야 되는지 명시한다.


break 2;


5. continue ; 다음 루프로 넘어가기


continue 문은 PHP에게 현재 루프를 중단하고 바로 다음 루프로 가라고 알리는 것 외에는 break 문과 비슷하다. 따라서 전체 루프를 빠져나가는 대신 현재의 루프만 지나간다.

이 방법은 현재의 루프를 계속 실행할 필요가 없고 프로세서의 시간을 절약해야 하거나, 다음 루프로 이동해 오류 발생을 방지하는 등의 경우에 유용하게 사용된다.


<?php
 
    $j = 11;              //  $j 를 11로 초기화
    
    while($j-- > -10){              //  $j 가 -10 보다 큰지 비교 후 1 감소
        
        if($j==0) continue;          // 0으로 나누면 오류가 발생하기에, $j 가 0이면, 다음 루프로 넘어간다.
        
        echo "$j ".(10/$j) . "<br/>";    // 10을 $j로 나눈 결과를 출력
        
     }
 
?>



출처: https://hyeonstorage.tistory.com/104?category=549768 [개발이 하고 싶어요]