반복문은 모든 개발 언에서 매우 중요한 내장함수 이다.
어떠한 조건에 맞게 계속 반복해서 원하는 값을 만들어 주는 명령 또는 데이터베이스와 연동하여 결과값 만큼 반복하는 루프 함수이다.
프로그램을 만들다보면 반복문 내장함수는 안쓰이는 곳이 없다.
그러니 필수 내장함수 명령어라고 생각하면 된다.
반복문은 조건문과도 함께 자주 활용된다.
php에는 for문, while문, do-while문, foreach문 4가지가 있다.
1. while()문
(PHP 4, PHP 5, PHP 7)
while 루프는 PHP에서 가장 간단한 유형의 루프입니다.
while 문의 기본 형식 은 다음과 같습니다.
| <?php while (조건1 비교연산자 조건2) { echo "조건에 부합할때까지 반복함"; } ?> | cs |
while 문의 의미 는 간단합니다.
while문은 IF문 처럼 첫 실행은 FALSE로 시작 되며 조건이 값 TRUE인 동안만 반복을 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php // 1에서 10까지 반복하는 루프 코딩 // 샘플1과 샘플2는 동일한 코딩 입니다. // 샘플1 $i = 1; // $i값 1 while ($i <= 10) { echo $i++; // $i++는 반복할때 마다 $i만큼 증가 } // 샘플2 while ($i <= 10): echo $i; $i++; endwhile; ?> | cs |
if 문과 마찬가지로 문 그룹을 중괄호로 묶거나 대체 구문을 사용하여 동일한 while 루프 내에서 여러 문을 그룹화 할 수 있습니다 .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php // 1에서 100까지 반복하며 짝수만 출력 하는 코딩 $i = 0; while ($i <= 100) { if ($i == 0) { echo $i; } $i++; } // 위 코드를 좀더 잛게 만든다면 이정도 일것 같다. while ($i <=100) { ($i == 0)?'짝수':'홀수'; $i++; } ?> | cs |
2. do-while()문
(PHP 4, PHP 5, PHP 7)
do-while문은 조건문을 마지막에 실행 된다는 점을 제외하면 while문과 매우 유사합니다 .
일반 while문은 주된 차이점은 do-while문의 첫 번째 반복이 실행되도록 보장된다는 것입니다
do-while 루프에 대한 구문은 하나뿐입니다.
| <?php $i = 0; do { echo ''; // 첫번째 무조건 실행 } while (조건1 비교연산자 조건2); // 조건값 Ture 면 반복 실행 false면 루프종료 ?> | cs |
3. for()문
(PHP 4, PHP 5, PHP 7)
for문은 정말 많이 사용하는 내장함수이다.
for문은 초기값, 조건값, 증감값을 설정할 수 있다.
초기값은 변수의 처음으로 넣을 값이고,
조건값은 하나의 변수를 어디까지 반복시킬것인지를 의미하며,
증감값은 비교 대상의 값을 증감 또는 감소 하여 반복할 회수를 도움을 주는 역활이다.
for문의 기본 문법은 다음과 같다.
| <?php for(초기값; 조건값; 증감값) { echo '조건값 True면 출력한다.'; } ?> | cs |
다음은 while문과 for문의 100까지의 루프 비교하여 보자
| <?php // while문 100까지 루프 코드 $i = 0; // $i값 초기 값 while ($i <= 100) { // 조건값 echo $i++; // $i++증감 } // for문 100 루프 코드 for($i = 0; $i <= 100; $i++) { echo $i; } ?> | cs |
두가지의 비교 하였을때 어떤 것이 더 가독성이 있어 보이는지 알 수 있다.
다음은 다양한 표현의 for문 샘플 3가지를 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php // 샘플1 for ($i = 1; $i <= 10; $i++) { echo $i; } // 샘플2 for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } // 샘플3 for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); ?> | cs |
3가지 모두 1~10까지 반복하는 루프 코드 이다.
코드의 목적이 1~10까지 반복하는 프로그램이라면 샘플3번이 제일 좋을 것이다.
하지만 3가지 샘플을 보여준 이유는 어떠한 형식의 프로그램을 코딩하느 목적에 따라 활용해야 한다.
4. foreach()문
(PHP 4, PHP 5, PHP 7)
foreach문은 배열을 반복 할 수있는 쉬운 방법을 제공합니다.
foreach문은 배열과 객체에서만 작동하며 다른 데이터 유형을 가진 변수 나 초기화되지 않은 변수에서 사용하려고하면 오류가 발생합니다.
두 가지 구문이 있습니다.
| <?php foreach (배열 변수 as 값 변수) { echo 값 변수 출력; } foreach (배열 변수명 as 키값 => 값 변수) { echo 키값 및 값 변수 출력; } ?> | cs |
foreach문을 좀더 정확하게 이해 하기 위해서는 배열을 알면 이해하기 좀더 쉽다.
다음 예제를 보면서 좀더 설명을 하도록 하겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php // 샘플1. 10번 반복하고 1~10까지 출력하는 루프 코드 $arrayVal = array('1','2','3','4','5','6','7','8','9','10'); // 배열값 10개 foreach ($arrayVal as $value) { echo $value; } // 샘플2. 5번 반복하고 1~5까지 출력하는 루프 코드 $arrayVal = array('1','2','3','4','5'); // 배열값 5개 foreach ($arrayVal as $value) { echo $value; } // 샘플3. 5번 반복하고 문자 하나부터 다섯까지 출력하는 루프 코드 $arrayVal = array('하나','둘','셋','넷','다섯'); // 배열값 5개 foreach ($arrayVal as $key => $value) { echo '배열 키값='.$key.'/배열값='.$value; } ?> | cs |
샘플1번은 위 다른 반복문 처럼 1~10까지 반복하는 루프 코드 이다.
좀 다른점은 조건 또는 증감에 의해 반복하는 루프 코드가 아니라.
배열에 의해 반복하는 코드 이다.
말 그대로 foreach문은 배열값이 없으면 반복하지 않는다.
샘플1번과 2번을 보면 알듯이 배열의 정보값에 의해 반복회수를 정한다.
샘플3번은 샘플 2번과 동일 하게 배열에 5개의 값에 의해 5번을 반복하지만
숫자문자열 대신 한글문자열을 출력하며 배열의 key값을 같이 출력한다.
샘플3번 출력값
| 배열 키값=0/배열값=하나 배열 키값=1/배열값=둘 배열 키값=2/배열값=셋 배열 키값=3/배열값=넷 배열 키값=4/배열값=다섯 | cs |
배열 키값은 배열에는 보이지 않지만 php엔진에서 자동으로 부여하는 번호표이다.
array()는 따로 좀더 자세히 배우도록 하겠다.
참고 :::
PHP 5에서 foreach가 처음 실행을 시작하면 내부 배열 포인터가 배열의 첫 번째 요소로 자동 재설정됩니다. 이는 foreach 루프 전에 reset () 을 호출 할 필요가 없음을 의미합니다 .
대로 의 foreach은 PHP 5의 내부 배열 포인터에 의존하고, 루프 내에서 변화하는 예기치 않은 동작이 발생할 수있다.
PHP 7에서 foreach 는 내부 배열 포인터를 사용하지 않습니다.