1. 제어구조
PHP의 구문을 보면 대입문, 조건문, 반복문, 함수호출 등 여러가지의 형태가 있습니다.
- 조건문
if문은 조건문으로서 조건을 만족하면 명령을 실행시키고, 만족하지 않으면 그냥 빠져나옵니다. 일반적인 if문은 이렇게 쓰여집니다.
$a = 7;
$b = 5;
if($a > $b)
/* 참이면 echo를 실행하고, 거짓이면 실행하지 않는다.
이것은 참이므로 echo를 실행한다. */
echo "참일 경우 글자를 출력합니다.";
$c = 2;
$d = 5;
if($c > $d)
// 이것은 거짓이므로 echo를 실행하지 않는다.
echo "거짓일 경우 글자를 출력하지 않습니다.";
?>
else는 if문이 거짓일 경우에 실행하는 것입니다.
$a = 2;
$b = 5;
if($a > $b) {
echo "a 값이 b 보다 큽니다.";
} else {
echo "a 값이 b 보다 크지 않습니다."; // else의 문장을 실행한다.
}
?>
"$a가 $b보다 크다면" "a 값이 b 보다 큽니다."를 출력하고, 그렇지 않다면 "a 값이 b 보다 크지 않습니다."를 출력합니다.
위의 경우 그렇지 않기 때문에 후자의 결과를 출력합니다.
elseif문은 여러 개 사용할 수 있습니다. 차례차례 참과 거짓을 평가하다가 참인 곳을 실행합니다. 따라서 그 이전의 if문은 거짓임을 알 수 있습니다.
$a = 5;
$b = 5;
if($a > $b) {
echo "a 값이 b 보다 큽니다.";
} elseif($a == $b) {
echo "a 값과 b 값은 같습니다.";
} else {
echo "a 값이 b 보다 크지 않습니다.";
}
?>
이러한 경우 $a와 $b의 값이 같으므로 elseif의 조건에 맞기 때문에 그 문장을 실행하게 됩니다.
따라서 결과값은 "a 값과 b 값은 같습니다."가 됩니다.
- 반복문
반복문에는 while문과 for문이 있습니다.
$i = 1;
while($i <= 10) {
echo $i++;
}
?>
while문은 이렇게 사용하며, 위의 while문은 1부터 10까지 하나씩 출력하라는 명령이므로 출력값은 1 2 3 4 5 6 7 8 9 10이 됩니다.
do while문은 while문과 비슷하지만 while 조건절은 do 문장이 실행된 후에 있으므로, do 문장의 값을 실행하게 됩니다. 따라서 값이 다르게 나타날 수 있습니다. 그 예를 아래에서 알아보죠.
/* while 문을 사용하였을 경우 */
$i = 0;
while($i > 0) {
echo "i= $i"; // i값은 조건에 맞지 않기 때문에 값이 없슴.
}
/* do while 문을 사용하였을 경우 */
$j = 0;
do {
// while절 이전의 do 문장을 실행하여 j값인 0이라는 값이 출력됨.
echo "j= $j";
}while($j >0);
?>
for문의 사용법은 이렇습니다.
/* 예제 1 */
for ($i=1;$i<=10;$i++) {
print $i; // print는 echo와 같은 기능
}
?>
($i=1 ; $i<=10 ; $i++)식을 한번 읽어볼까요..."변수 i는 1부터 ; i는 10까지 ; i값을 하나씩 증가시킨다".....
출력결과는 1 2 3 4 5 6 7 8 9 10 입니다.
1부터 10까지 구하는 for문을 다른 식으로도 표현할 수 있습니다.
/* 예제 2 */
for ($i=1;;$i++) {
if($i>10) {
break;
}
print $i;
}
/* 예제 3 */
$i = 1;
for (;;) {
if($i>10) {
break;
}
print $i;
$i++;
}
/* 예제 4 */
for ($i=1;$i<=10;print $i,$i++);
?>
예제 1번의 방법이 가장 흔히 쓰이고, 편한 것이지만, 예제 2,3,4번처럼 표현할 수 있다는 것도 아셔야 합니다.
foreach문은 배열에 대해 key값과 value값을 순환작업하여 지정해 줍니다.
/* 예제 1 */
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "\$a: $v \n";
}
/* 예제 2 */
$a = array (1, 2, 3, 17);
$i = 0;
foreach($a as $v) {
print "\$a[$i] => $v \n";
$i++;
}
/* 예제 3 */
$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v \n";
}
?>
[예제 1의 결과]
$a: 1 $a: 2 $a: 3 $a: 17
[예제 2의 결과]
$a[0] => 1 $a[1] => 2 $a[2] => 3 $a[3] => 17
[예제 3의 결과]
$a[one] => 1 $a[two] => 2 $a[three] => 3 $a[seventeen] => 17
switch문은 if문을 나열한 것과 비슷합니다. 그러나 switch문은 조건에 맞는 case문 이후부터 switch문 끝까지를 실행하기 때문에 break로 중지시켜야 합니다. 예를 볼까요..
/* 1) if문 사용 */
$i = 1;
if ($i == 0) {
print "i 값이 0 이다.";
}
if ($i == 1) {
print "i 값이 1 이다."; // 결과출력
}
if ($i == 2) {
print "i 값이 2 이다.";
}
/* 2) switch문 사용(break가 없는 경우) */
$i = 1;
switch ($i) {
case 0:
print "i 값이 0 이다.";
case 1:
print "i 값이 1 이다."; // 결과출력
case 2:
print "i 값이 2 이다."; // 결과출력
}
/* 3) switch문 사용(break로 중지시킨 경우) */
$i = 1;
switch ($i) {
case 0:
print "i 값이 0 이다.";
break;
case 1:
print "i 값이 1 이다."; // 결과출력
break;
case 2:
print "i 값이 2 이다.";
break;
}
?>
위의 예제중 1) if문을 사용한 경우와 3) break로 중지시킨 switch문을 사용하였을 때는 같은 결과로 "i 값이 1 이다." 출력합니다.
그러나 2) switch문은 break로 중지시키지 않기때문에 $i=1인 case문 이후에도 결과값을 출력하여 "i 값이 1 이다." 와 "i 값이 2 이다."가 나오게 됩니다.
'프로그래밍 > PHP' 카테고리의 다른 글
php 기본 자료 2 (0) | 2012.08.17 |
---|---|
php 기본 자료 1 (0) | 2012.08.17 |
php -xml parser (0) | 2012.08.17 |
php - 이메일 존재여부 검색 프로그램 (0) | 2012.08.17 |
php - 소켓 통신 자료(socket fd 에서 eof 인식문제) (0) | 2012.08.17 |