php 초보탈출( 제어문 if, else if 문)-어렵게 설명 ㅎ
짧은주소
- - 짧은주소: http://v2.eyoom.net/bbs/?t=1NE 주소복사
본문
이전 게시물도 있지만, 좀더 복잡하게 ㅋ 설명한 글입니다 ㅎㅎ
아래의 내용은 예전에 제 블로그에도 포스팅된 내용입니다.부실할수 있습니다..
참고용으로만...
제어문을 쓰는 이유… 제어하기 위해서 ㅋㅋㅋㅋㅋ
자 게시판을 만든다고 쳤을때 글쓴이가 본인글을 보면 수정이라는 버튼이 보이고 다른사람이 그 글을 봤을땐 수정이라는 버튼이 안보이게 만들고 싶다고 가정해 봅시다.
그럼 본인인지 확인이 되어야 할꺼고 본인이면 버튼을 보여주고 본인이 아니라면 버튼을 보여주지 않으면 되겠죠?
자 저런 일들을 하기 위해서 필요한 제어문이 바로 if문입니다.. 사실 제어문들만 알아도 프로그래밍은 반이상 할수있다고 보시면됩니다.. (개인적인 생각)
그럼 바로 코드를…
<?php $na = 0; $age = 13; if($na == 1) { echo("나"); } else { echo("나아님"); } if($age > 13) { echo("13살 넘었어요"); } ?>
자 위에 코드를 보실까요? $na 라는 변수엔 0을 넣어줬구요 $age라는 변수엔 13을 넣었습니다.
그리고 그다음에 이제 배우실 if문이 나오네요. 자 그럼 $na 라는 변수에 1이 들어가면 본인인 것이고 1이 아니라면 다른사람 이라고 합시다.
그럼 1일때는 나라고 표시해줘야하고 1이 아니면 내가 아리라고 표시를 해줘야겠죠?
그럴때 쓰는게 저 if문입니다. if($na == 1) 을 보시면 $na라는 변수가 1과 같으면 이라는 뜻이에요 즉 if(조건문) 이 참이면 if(조건문){ } 저 괄호부분 { 여기서 부터 } 여기까지를 실행하게 되어있죠 .. 그럼 조건문을 알아볼께요…
if($na == 1) 에 == 부분은 좌변($na) 과 우변(1) 이 같으면 이라는 뜻입니다.
그러면 $na와 1이 같으면이 되겠죠… 그다음 같으면이 있으면 같지 않으면도 있어야 합니다.. 같이 않다는 것은 != 이런식으로 표현을 해줍니다. 같이않다는 뜻..
다음으로 크다 작다 도있어야겠죠? 이건 우리가 초등학교때 배운 산수와 똑같답니다.
< 이건 좌변이 우변보다 작다 라는 표현이구요 >이건 좌변이 우변보다 크다 라는 표현입니다.
미만 초과 의 표현이라고 보시면 되겠네요.
다음으로 이상 이하의 표현도 있어야겠죠.. 좌변이 우면보다 작거나 같다 라는 표현은 <= 이걸로 해줍니다. 그리고 좌변이 우변보다 크거나 같다 라는 표현은 >= 이걸 씁니다..
그럼 조건문이 이해가 가시죠? ㄷㄷㄷㄷㄷ
자 다시 코드로 돌아가서 보겠습니다. $na 가 1과 같은 값이라면 그담 중괄호 부분을 실행합니다.
나 라고 뿌려줘라 라는뜻이죠… 그리고 중괄호 끝나고 그다음을 보시죠 else 라고 되어있죠?
그부분은 조건문이 참이 아니라면 그 뒤에 오는 { } 부분을 실행해라 입니다.
그럼 $na 가 1과 같은값이면 나 라는 글짜가 뿌려지고 1과 같은값이 아니면 나아님 이라는 값이 뿌려집니다.. 이해가시죠?
그렇다면 두번째 if문을 보죠. 만약 $age라는 값이 13보다 크면 13살넘었어요 라는 글짜를 뿌려주고 아니라면 아무것도 안하게 됩니다… 참 쉽죠? ㅋㅋ
그럼 다음 두번째 소스를 보시죠
<?php $na = 1; $age = 14; $sex = "man"; if($sex == "man" & $age > 13) { echo("13살 넘은 남자입니다"); } else if($age > 13 | $na == 1) { echo("13살이 넘었거나 주인입니다."); } else { echo("아무 해당사항이 없습니다."); } ?>
조건문을 2개를 주는 법을 공부하겠습니다.. 13살넘은 남자를 구분하고 싶다면?
13살을 넘어야 하고 그리고 남자여야 겠죠?
물론 if문 안에 또 if문을 써주고 실행해도 상관은 없습니다만… 한줄로 쓸수있는 방법 입니다. 한번 보시죠 ㅎ
if($sex == "man" & $age > 13) 이부분 보시면 조건이 2개 입니다
$sex 변수가 man과 같을때 한개 하고 $age 변수가 13보다 클때 입니다
근데 그 중간에 & 표시가 ㅎㅎ 저건 무슨뜻이냐면 그리고 라고 보시면됩니다.
즉 $sex변수가 man과 같아야합니다 그리고 $age 변수는 13보다 커야 합니다.
라는 뜻이죠. 즉 2가지 조건문을 동시에 만족했을때 뒤에 { }안의 명령어를 실행하라 라는 구문입니다. 그리고 else if문이 있습니다. 위에 if문이 거짓이면 else 문 뒤에 { }를 실행하는데 조건을 또 줄수가 있답니다..
즉 if문이 거짓이면 else if문 안의 조건문으로 다시 한번 비교를 해줍니다.. else if문은 몇개가 붙더라도 상관없습니다. else if문 아래 else if문이 붙는다면 if문도 거짓이고 첫번째 else if 문도 거짓일때 그다음 else if 문의 조건을 비교하게 됩니다..
그럼 소스 설명을 한번 다시 볼까요?
if($sex == “man” & $age > 13) 이부분이 참이 아니면 else if($age > 13 | $na == 1) 이부분을 비교해서 참이면 바로뒤에 { echo(“13살이 넘었거나 주인입니다.”); } 이부분을 실행하라 라는 뜻 입니다.
즉 $sex 변수가 man과 같고 그리고 $age변수가 13보다 크지 않으면 다음 $age변수가 13보다 큰지 또는 $na변수가 1값인지 비교해서 참이면 뒤에 { echo(“13살이 넘었거나 주인입니다.”); } 이부분을 실행 해라 라는 뜻입니다.
자 근데 여기서 else if($age > 13 | $na == 1) 이부분에서 처음보는 문자가있죠? 역시 조건문은 2개인데 구분해주는게 다르네요 | 문자의 뜻은 또는 입니다.. 즉 $age > 13이라는 조건문과 $na == 1 이라는 조건문중에 하나라도 참이면 그 뒷부분을 실행하라입니다..
&는 두개다 참이어야 했지만 | 는 둘중 하나만 참이면 뒷부분을 실행합니다. 뒷부분이라하면 물론 바로뒤에 붙는 { } 이부분의 안의 실행문을 실행하는거지요.
참 쉽죠? ㄷㄷㄷㄷ 자 그럼 마지막 뒷부분은 위의 두가지 if문과 else if문이 둘다 참이아니면 else 문의 뒤에있는 { } 안의 실행문을 실행하게 됩니다.
if문 쉽죠? ㅋㅋ
이해를 다 하셨으리라고 봅니다. 그럼 if문을 줄여서 쓰는 법을 알아보겠습니다..
삼항연산자라는것을 쓸꺼에요 소스를 한번 보시죠
<?php $na = 1; if($na == 1) { echo("aaa"); } else { echo("bbb"); } ?>
자 위에 구문은 이제 이해가 가시죠? 그럼 저 구문을 삼항연산자로 줄여서 써보겠습니다.
$na = 1; echo( ($na == 1)?"aaa":"bbb" );
자 볼까요? 이상한 머시기가 주루룩있죠? ㅋ 문법은 이렇습니다.
(조건문)?”참일때값”:”거짓일때값”;
이해가 가시나요?
해석을 해보면 echo() 는 뿌려줘라 이고. ($na == 1) 이부분이 조건문입니다.. $na 가 1이면 그뒤에부분은 ?”aaa” 조건문($na == 1)이 참이면 aaa 뒤에 :”bbb” 거짓이면 bbb 라는 뜻입니다 echo문 안에 있으니까 뿌려줘라 겠지요..
실행을 해보시면 이해가 빠르실겁니다. 보통은 변수하나를 주고 그 변수에 값을리턴받을때 씁니다만..
위와 같은식으로도 사용가능하더라구요 .. 좀더 이해하기 쉽게 위에 구문을 한번 풀어보겠습니다
$na = 1; $var_echo = ($na == 1)?"aaa":"bbb"; echo($var_echo);
그나마 이해하기 좀 쉬우시죠?
저걸 삼항연산자라고 합니다.. 다른소스 보시다가 저런구문이 나오면 당황하지 마시길 삼항연산자는 if문을 줄여서 쓴거락 생각하시면 됩니다.. 삼항연산자를 가지고 else if 문을 사용해볼까요?
$na = 3; $var_echo = ($na == 1)?"aaa":(($na == 2)?"bbb":"ccc"); echo(var_echo);
자 소스를 보시면 삼항연산자 안에 또 괄호를 주고 다시 삼항연산자를 주었습니다..
즉 $na가 1일때는 aaa를 $var_echo에 넣어주고 아니면 $na 가 2이면 $var_echo에 bbb 를 넣어주고 그것도 아니면 ccc를 넣어줘라 라는 뜻입니다..
조건문 안에 조건문을 주었어요… 근데 보통은 else if문이 필요한 상황이라면 삼항연산자보단 else if 문을 써주는게 안햇갈린다는 ㅋㅋ 그냥 if문을 한번만 쓸때 사용하도록 하세요…
좋아요!
![](http://v2.eyoom.net/data/member/profile/l2zeo.gif)
Progress Bar 10%
댓글목록
퓨리프리님의 댓글
살려주세요..ㄷㄷㄷ ㅜㅜ
축하합니다. 첫댓글 포인트 22포인트를 획득하였습니다.