본문 바로가기

프로그래밍/PHP

php 기본 자료 3

반응형

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