20. PHP 기타 제어문
루프의 제어
일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행한다. 하지만, 사용자는 continue와 break 문을 통해 루프의 흐름을 직접 제어할 수 있다.
continue 문
continue 문은 루프 내에서 사용하며, 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 한다. 보통 반복문 내에서 특정 조건에 대한 처리를 제외시키고자 할 때 사용한다.
다른 언어와 달리 PHP에서는 switch 문에서도 continue를 사용할 수 있어 switch도 반복문 처럼 사용이 가능하다.
다음은 1부터 10까지의 정수중에 2의 배수를 제외하고 출력하는 예제이다.
1
2
3
4
5
6
7
8
|
<?php
$even = 2;
for ($i=1; $i<=10; $i++) {
if ($i % $even == 0)
continue;
echo "{$i} <br>";
}
?>
|
cs |
break 문
break 문은 루프 내에서 사용한다.
해당 반복문을 완전히 종료시키고, 반복문 다음에 위치한 명령문으로 이동시킨다.
즉, 루프 내에서 조건식의 판단 결과에 상관없이, 반복문을 종료하고 싶을 때 사용한다.
다음은 1부터 10까지 차례대로 출력하는데 변수값이 8이되면 반복문을 종료하는 예제이다.
1
2
3
4
5
6
7
|
<?php
$number = 1;
while(true){ // 일부러 무한루프를 만듬
echo $number."<br>";
if(++$number === 8) break;
}
?>
|
cs |
goto 문
goto 문은 프로그램의 흐름을 지정된 레이블(label)로 무조건 변경하는 명령문이다.
goto 문은 다른 제어문과는 다르게 아무 조건 없이 제어를 이동시켜 준다.
따라서 가장 손쉽게 사용할 수 있지만, 반면에 프로그램의 흐름을 매우 복잡하게 만들기도 한다.
이러한 단점 때문에 거의 사용하지 않는다.
1
2
3
4
5
6
7
|
<?php
goto move;
echo "오늘은 열심히 일해야지!";
move :
echo "일은 무슨... 집에 가고 싶다...";
?>
|
cs |
제어문의 대체 문법
PHP는 제어문을 위해 사용할 수 있는 또 하나의 대체 문법을 제공하고 있다.
이 대체 문법은 조건문에서는 if 문과 switch 문, 반복문에서는 while 문, for 문과 foreach 문에서 사용할 수 있다.
대체 문법의 사용 방법은 우선 제어문의 여는 괄호({)를 콜론으로 대체한다.
그리고 닫는 괄호(})를 각각 endif;, endswtich;, endwhile;, endfor;, endforeach;로 대체하면 된다.
1
2
3
4
5
6
7
8
|
<?php $var = 4; ?>
<?php if ($var > 5): ?>
변수의 값은 5보다 큽니다. <!-- 이 부분은 HTML -->
<?php elseif ($var == 5): ?>
변수의 값은 5입니다. <!-- 이 부분은 HTML -->
<?php elseif ($var < 5): ?>
변수의 값은 5보다 작습니다. <!-- 이 부분은 HTML -->
<?php endif; ?>
|
cs |