웹마스터 팁

PHP의 제어구조

2002.08.22 09:33

Mr. JH

PHP에서 제어구조를 잘 안다면 여러가지 프로그래밍이 가능해지게 되죠..
실제로 많은 소스들을 보면 상당량의 제어문이 있음을 확인할 수 있습니다..
그만큼 유용하면서도 중요한 부분이라고 할수있습니다.

첫번째로, if(), elseif(), else()를 보도록하겠습니다.
잘 아시겠지만 조건문입니다. 다들 잘알고 계시겠지만 이걸 얼마나 잘 활용하느냐가 중요하죠.

if문의 사용방식은 다음과 같습니다.


if(조건문){

// 조건을 만족할때 실행되는 부분

}


이런식으로 사용을 한답니다.
실제로 if문을 아주 유용하게 사용하는 예를 들어보이겠습니다.

게시판에서 회원이면 글쓰기 버튼이 보이지만 회원이 아닐때는 사라지는 그런걸..
if문으로 아주 쉽게 제어할수가 있답니다.


if($user_id){
    글쓰기
}


이렇게 제어를 하게 됩니다. 무지 간단하죠??
즉, 회원아이디 (user_id)가 있는경우에만 글쓰기 버튼을 보이게 하는거죠..

if문을 사용할때..
"어떤값이 있다면.. 뭘해라" 와 "어떤값이 없을때 뭘해라"
이렇게 두가지 경우를 사용할수있습니다.
첫번째.. 있다면 이라고 사용할때는 if(어떤값) 이라고만 해주면 됩니다.
그리고 없다면 이라고 사용할때는 if(!어떤값) 이라고 해주면 됩니다.

!(느낌표)가 바로 없다, not 을 의미하죠.

if문은 이런식으로 사용하시면 됩니다.
또한가지 예를 더 보여드리자면



   $a=10;
   $b=100;

   if($a>$b){
         echo "a는 b보다 크다";
   }
  
   if($a<$b){
         echo "a는 b보다 작다";
   }

?>


위의 소스를 실행한다면 "a는 b보다 작다" 가 출력이 되겠죠..
위의 소스를 elseif문을 사용해서 만들수도 있습니다.



   $a=10;
   $b=100;

   if($a>$b){
         echo "a는 b보다 크다";
   }
  
   elseif($a<$b){
         echo "a는 b보다 작다";
   }

?>


이 역시 출력결과는 첫번째와 같아지게 됩니다.

if와 elseif의 차이는 elseif 문을 사용하게 되면.. 순차적으로 읽게 됩니다.
즉, 첫번째 if문이 참이 아니면 다음 elseif문을 실행시키고 그게 참이 아니면 다음을 실행하고
이런식으로 넘기는 거죠..

여기서 잠깐!!

if나 else문을 사용할때..

if(조건){
실행내용
}

이렇게.. {} 괄호를 사용하기도 하지만..
괄호를 사용하지 않고..

if(조건) 실행내용

이렇게도 사용을 한답니다.
그러면 두개의 차이는 뭘까요??
분명 차이가 있습니다.

if(조건문){
실행내용1
실행내용2
실행내용3
}

이거랑

if(조건문)
실행문1
실행문2
실행문3

이랑 각각 실행 시키면 어떻게 되는지 보면... 첫번째 {}괄호를 사용한 경우는..
{}속의 모든 실행내용.. 즉, 3개의 실행내용을 다 실행시킵니다.
근데 두번째의 경우는 실행문1 만 딸랑 실행을 시키게 됩니다.

즉, 조건문문속에.. 여러개의 명령이 와야 한다면.. {}로 묶어주고..
딸랑 하나만 실행할거랑.. 구지 {}로 안묶어줘도 된다는 이야기 였습니다..^____^


else문은 조건을 넣어줄 필요가 없고 if문의 조건이 참이 아니면.. else문을 실행하게 되죠..
즉, if문에서 요구하는 조건외의 모든 경우를 말하게 되는거죠..
위의 소스를 else문을 이용한다면



   $a=10;
   $b=100;

   if($a>$b){
       echo "a는 b보다 크다";
   }
  
   else{
       echo "a는 b보다 작다";
   }

?>


출력결과 역시 "a는 b보다 작다"가 나오겠죠..
이렇게 3가지 조건문을 잘 사용할수있다면 아주 많은 도움이 될거라 믿습니다.


그다음으로 반복문입니다.
반복문에는 while()문과 for()문이 있습니다.

먼저 while()문의 사용법을 보면..

while(조건문){
      // 반복시킬 부분
}

이런식으로 사용하게 됩니다.
조건문에 이어 반복문도 아주 많이 사용합니다. 게시판을 만들때..
글목록 부분도 실제로 while문을 통해서 반복을 시켜서 글리스트를 구해오는거죠..

while문의 간단한 예를 보면


$a=1;
while($a<10){
     echo " $a 번째 반복
";
     a++;
}
?>


이 소스를 브라우져에 출력하면 다음과 같은 결과가 나오게 됩니다.

1번째 반복
2번째 반복
3번째 반복
4번째 반복
5번째 반복
6번째 반복
7번째 반복
8번째 반복
9번째 반복

풀이하자면 첨에 변수 a를 1로 정해주고 a가 10보다 작아질때까지 a를 1씩증가시키는거죠..

for()문도 마찬가지입니다. 다만 사용방법이 약간 달라서 그렇치..
위의 소스를 for문으로 만들면 다음과 같이 됩니다.


for($i=1;$i<10;$i++){
      echo " $i 번째 반복
";
}
?>


이렇게 하면 while문의 결과와 같은 결과를 얻을수가 있습니다.
for문의 사용방법을 간단히 정리해보면

for(초기화; 조건; 증가){
   반복될 내용
}

이런식으로 사용을 하게되는거죠.

이 반복문들을 사용하실때는 조건을 잘 생각해보고 만들어야지 자칫잘못하면
무한루프에 빠지게 될수도 있습니다.


마지막을 exit입니다.
이건 소스 중간에 소스를 종료시키는 명령입니다.
별것 아닌것같지만 사실 상당히 중요하게 사용되는것중에 하나입니다.

제가 만든 게시판을 예로 들어보이겠습니다.

누군가가 회원가입을 합니다.

join.php파일에서 회원가입후 OK를 눌르면 join_ok.php 파일로 정보를 넘겨줘서
체크를 하게 됩니다. 근데 그중에 비밀번호 두개가 같은지 안같은지를 검사하는 부분이 있습니
다.

만약에 같다면 계속 실행을 하지만.. 틀리다면



이렇게 뒤로 되돌려보냅니다.
근데 여기서 그냥 되돌려보낸다면 어떤 결과가 발생하는지 생각해보셨습니까??

회원가입 체크하는 파일 (joing_ok.php)의 가장 마지막에는
디비에 저장하는 부분이 있습니다.

물론.. 비번이 틀리다고 되돌려 보내긴 보냈지만.. 소스는 마지막까지 다 읽어버리기때문에
회원의 정보가 디비에 저장이 되어버립니다.
그리고 다시 되돌아가서 비번 두개를 정확하게 입력후 가입할려고 한다면
아마 "이미 가입된 아이디입니다" 라고 메세지가 나와 버리겠죠??

이러한걸 막기 위해서 필요한게 바로 exit 입니다.

위에서

echo "
";
exit;

이렇게 바로 exit가 뒤따라 와야 한다는거죠..
즉, 비번이 틀리다는 경고 메시지를 보여주고.. 전페이지로 돌려보내면서
소스를 읽는것도 끝을 내야 한다는거죠..

이제 아시겠죠??

이렇게 사소한것처럼 보이지만 이러한 제어들을 잘해야만 나중에 버그도 없고
별 문제없는 프로그램을 만들수가 있답니다.


이상 제어구조에 대해 알아봤습니다.
다음에는 함수에 대해서 보도록 하죵 ~
제목 글쓴이 날짜
초보의 절대경로 알아내기.. #1 아이쿠 2002.09.17
개인 서버 운영하시는분 서버 꺼졌을때 메시지 띄우기; [12] 실버 2002.09.11
전에 올렸던 게시판입니다. JHboard 게시판 중도 포기작품..!; [5] file Myzzix 2002.09.09
디렉토리의 내용을 가져오는 방법 [2] DHelper 2002.09.02
[php] 스킨 해석&출력... [2] 엔카일 2002.09.01
[PHP 초보에서 중수로 - 쿠키편] 2강 : 쿠키 다루기 [3] file TheMics 2002.08.31
[PHP 초보에서 중수로 - 쿠키편] 1강 : 쿠키의 이해 [2] file TheMics 2002.08.31
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 4 end [15] 아이쿠 2002.08.30
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 3 [1] 아이쿠 2002.08.30
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 2 [11] 아이쿠 2002.08.30
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 1 [17] 아이쿠 2002.08.30
array_multisort를 이용한 간단한 순위체크 [4] Doogi 2002.08.28
변수를 사용하여 echo로 변수값 출력하기. [7] ZipShin 2002.08.28
sleep() 제대루 쓰기... 요것두 [별루 알아도 도움 안되는 팁] [5] sMokaHallo 2002.08.24
[허접] implode() 함수로 배열을 변수로! Myzzix 2002.08.23
[허접] rand() 함수를 이용한 뒤죽박죽 날짜 출력 [5] Myzzix 2002.08.23
파일하나로 만드는 한줄 메모장(테마기능 포함) [8] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22