공지가 있을때까지 구매요청/제휴/견적요청을 받지 않습니다.

4강. [문법] 반복문 for, while > PHP 강좌

본문 바로가기
사이트 내 전체검색

HOT - 펜션예약솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드4

HOT - 펜션예약솔루션 - 그누보드4

NEW - 인터넷뉴스 솔루션 - 그누보드5

계좌정보

  • 국민 : 028201-01-019932
  • 대구 : 068-07-021683-8
  •  
  • 예금주 : 림소프트/김상림
  •  

파트너쉽

PHP 강좌

4강. [문법] 반복문 for, while

페이지 정보

작성자 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일12-02-25 06:08 조회3,250회 댓글7건

본문

오랜만에 올리는 듯하네요. 일을 할까 강좌를 할까 고민하다가 올립니다.


제가 문법중 가장 좋아하는? 반복문입니다. 처음에는 어렵게 느껴지는 문법이기도 합니다.

좋아한다는 표현보다 가끔 반복문 속에서 답을 찾을때가 재밋습니다.


반복문에는 for 문과 while이 거의 대표적이고 배열경우 foreach 문을 쓰기도 합니다.

반복문은 2개로는 부족하고 최소 그 이상의 뭔가를 표현할때, 그리고 그것이 배열(array)의 성격을 가지고 있을때 많이 사용됩니다.

주의사항으로는 잘못 사용하면 첫글에 있듯이, javascript는 띄워놓은 나의 브라우져가 무한반복으로 먹통이 되고 php는 서버가 고생을 하게됩니다.

10년전 썸네일이미지가 거의 유행안할때, 썸네일은 요즘과 달리 귀하디 귀한 놈이었습니다. 당시 구경할수 있있던 곳은 파코즈일겁니다. 암튼, 과거에는 호스팅경우 썸네일 만들수 있는 GD library 가 서버에 없었으며, 혼자 서버 돌리는 사람이 서버에 설치하여 썸네일 구현하던 시기입니다. 그리고 호스팅업체들도 하나둘씩 GD를 지원하게 될때 큰 이미지가 로딩에 부하를 줘서 약간 큰거 몇개 만들고 하면 바로 계정정지 당하고 했었습니다.

서버부하를 이야기하다보니 옛날 생각이 잠깐 납니다만.. 요즘은 하드웨어 성능부터 좋아져서 그런지 이런 걱정은 없습니다만.. php에서 반복문 실행시 실행이 멈칫하든하면 ESC누르고 창닫고 for문 살피고 새창을 띄우시길 권해드립니다.

반복문은, 초기 별로 익숙치 않을때 중요한것이 앞서 이야기 했듯이 한줄 한줄 내려가는 원리등 잘 이해를 하고있어야 합니다.

반복문의 대한 예제나 사용방법등은 검색을 하면 쏟아져나오니 후에 참고하시길 바라면서 간단히 이야기를 하기로 하겠습니다.
$name=array("길동이","길순이","순자","말자","에릭 클랩튼");

$size=count($name);

for($i=0;$i<$size;$i++){
	if($name[$i]=="에릭 클랩튼") echo $name[$i]."은 외국인 이름이다<br><br>";
	else echo $name[$i]."은 한국인 이름이다<br>";
}

또는,
$i=0;
while($i<$size){
	if($name[$i]=="에릭 클랩튼") echo $name[$i]."은 외국인 이름이다<br><br>";
	else echo $name[$i]."은 한국인 이름이다<br>";
$i++;
}


위는 같은 결과를 보입니다.

for문 부터 보면, 위에서 배열을 정의하고 그 사이즈(배열수)를 구했습니다. 그리고 그 배열수 조건만큼 초기값 0부터 조건에 참일때까지 하나씩 증감해나갑니다.

$i=0은 초기값으로 0부터 시작한다는 뜻입니다. 왜냐면, 배열의 가장 첫번째 순번이 0번째이기 때문입니다.
배열 첫번째를 빈값으로 두고 $i=1로 시작해도 되겠지요.

프로그램 도중 문제해결에 어려울 경우 기초적 방법으로 도중, echo 함수 를 사용하여 해당 변수값을 출력시키는 것입니다. 반복문이면 exit;를 아래 두어 값만 체크할수 있겠지요.

이렇게 해보고 저렇게도 해보고, 안될때 한줄 한줄 하나하나 체크해나가는 습관을 가지시길 바랍니다. 프로그램은 어느정도 인내심도 필요하고 오기도 필요합니다. 수십수백줄은 보통인데다 결과값이 안나오거나 에러가 나면 문제점을 찾아가는 방법도 중요하거든요. 체크하는 습관이 그런경우 시간을 단축할수 있게 해줄수도 있습니다.

반복문은 조건에 만족할때까지 한줄 한줄 내려가다가 다 내려가면 다시 위로 올라가 $i++ 하나 증가시키고 조건을 체크합니다. 만족하면 다시 한줄 한줄 내려갑니다.

반복문 내에서 원하는 결과값을 찾았을때 loop 밖으로 나오게 할수 있습니다.

$name=array("길동이","길순이","순자","말자","에릭 클랩튼");

$size=count($name);

for($i=0;$i<$size;$i++){
	if($name[$i]=="순자"){
		echo $name[$i]."는 내가 찾는 사람이다<br>";
		break;
	}
	else echo $name[$i]."은(는) 내가 찾는 사람이 아니다<br>";
}

결과:
길동이은(는) 내가 찾는 사람이 아니다
길순이은(는) 내가 찾는 사람이 아니다
순자는 내가 찾는 사람이다


그리고, 반복문내에서 또 요긴하게 사용되는 것이 break;는 loop를 빠져나오는 것이라면 이하 스크립트는 실행안하고 바로 반복문 위로 올라가게 하는 것이 continue; 가 있습니다.

참고로 반복문안에 반복문이 있을 경우, 안쪽 반복문에서 break;를 쓰면 전체 반복문에서 밖으로 나가버립니다. 근데, 안쪽 반복문에서만 나가고 싶다면 break 1; 이라고 줄수 있습니다.


while문도 같은 의미로 이해하고 사용이 되고, 반복문은 mysql을 사용할때 위 반복문도 사용이 됩니다.

이번 반복문 문법에는 좀 어긋나지만 간단히 알고만 넘어가면 되겠습니다.

php에서 mysql을 사용하면 배열형식으로 가져오는게 보통입니다.

$que=mysql_query("SELECT name FROM table_name WHERE score='100' limit 3");

for($i=0;$result=mysql_fetch_array($que);$i++){
	echo $result["name"];	
}

또는,

$que=mysql_query("SELECT name FROM table_name WHERE score='100' limit 3");
$i=0;
while($result=mysql_fetch_array($que);$i++){
	echo $result["name"];	
	$i++;
}


table_name 에서 점수가 100인 사람 3명을 호출할때입니다.

위 echo 문은 아래와 같이 줘도 됩니다.
echo $result[$i]; 

또는
echo "$result[$i]<br>"; 

처럼 태그나 문자열같은 걸 바로 붙여서 편하게 할 경우, 전체 따옴표를 이용할 수도 있습니다.

근데 따옴표를 너무 남발해도 변수가 인식안될때가 있습니다. 이런경우 따옴표 안의 변수를 {} 중괄호로 감싸주기도 합니다.
echo "$result[{$i}]<br>"; 

그리고 echo $result[name]; 이와 같이 출력을 할 경우 배열안에 필드이름인 name에 쌍따옴표나 홑따옴표를 주지 않아도 에러가 나진 않습니다. 다만, 주는 습관이 좋겠습니다.


for, (do) while 문외 연관배열에서 사용되는 foreach등이 있습니다만, 생략하겠습니다.

팁으로, php 함수중에 배열을 일반 변수로 사용가능하게 해주는 함수(extract)가 있습니다.

$member["name"];
$member["phone"];

extract($member);

그러면 $member["name"]; 이것은 간단히 $name 으로 사용할수가 있게됩니다. 참 편하지만

$_POST와 같이 중요한 전역 배열변수 경우에는 안해주는게 좋습니다. 위 mysql 예제 반복문 안에서 잠깐 사용하면 편할때도 있겠네요.


만약, 여기까지 강좌를 잘 봐 오셨겠지만, 미쳐 알려드리지 못한게 있습니다.

물론, 제 개인적 생각일수 있고 사람마다 다를 수 있으니 어디까지 참조만 하시면 되겠습니다.


위에 이야기한 예제들을 매번 강좌시 100% 이해를 안해도 괜찮습니다. 무슨 이야기냐면, 어디까지나 참조로만 이해하시길 바랍니다.
왜냐면, 오늘 무엇을 구현할려고 하는데 문법하나를 제대로 알고 싶다면 검색이나 서적을 통해 완벽하게 익힐수도 있을겁니다. 예제는 넘쳐납니다. 그런 예제들을 완벽하게 이해했으니 완벽한 프로그래밍이 가능하다고 생각한다면 절대 오산입니다.
프로그램은 큰 산을 보고 그림을 그려나가야 됩니다. 그 안에 사용되는 것들은 문법도 도구에 지나지 않습니다. javascript, jquery, ajax 모두 도구에 불과합니다.

javascript의 달인, jquery의 달인 ajax의 달인, 얼마나 좋을지 모르지만 javascript만 놓고 볼때 달인이 될려면 상당한 시간과 부단한 노력이 필요합니다.

php, mysql 경우 javascript, jquery, ajax 3가지 모두 많은 것을 요하지 않습니다. 기본수준에서 중급이하까지정도만 하여도 왠만한 php 프로그래밍에 소화가 됩니다.

하다가 보면 어려운 것은, 줄수가 많아지고 변수가 많아지고, 철자하나 틀려서 몇일 고생할수도 있는것이 프로그램입니다. 문법을 잘 몰라 낙담할 필요없이 문법은 기본 개념만 알아도 도구를 사용할수 있다는 의미가 되므로 괜찮습니다. 그안에서 실력이 늘어나가는 것이고, 백번 이해한것 보다 한번 구현해보는 것이 값진것이라는 것이라는 걸 말씀드리고 싶습니다.

두려워 할것도 없습니다. 희열을 느끼는 것을 두려워 한다면 프로그램은 하기 힘들지도 모릅니다.
그안에서 재미를 찾아갈때 한 파일의 줄수는 수십 수백줄이 되가고 있고 한 파일에서 두파일 수십파일이 되는건, 1년 2년이 아닌 한두달도 가능한 일 일겁니다.

그럼.. 잘 이해하셨을거라 믿고.. 원래는,

빠르게 진도를 나가서 한달안에 마무리할 욕심이었는데, 먹고사는 일에 치중하다보니 강좌가 좀 더 지루해지거나 늦어질수도 있을거 같아 미리 양해를 구합니다. 그러나 적어도 1주일에 하나는 올릴 것이니 가끔 들르시면 될거 같습니다.

다음 강좌는 다음주에 뵙겠습니다^^

댓글목록

마스터koo님의 댓글

마스터koo 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

이번강좌도 처음엔 어려웠는데 반복해서 읽으니까 약간은 이해가 갔어요. 그런데
$que=mysql_query("SELECT name FROM table_name WHERE score='100' limit 3");

여기서 mysql_query는 무슨뜻인가요?

rimsoft님의 댓글

rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

php에서 ()을 mysql로 명령어를 날리겠다는 뜻입니다. mssql_query 도 있구요,
그 날린걸 아래 fetch_array로 가져오라는 뜻이구요. 반복문 써서 두개나눴지만 한줄 한번에 쓰기도 합니다.
$que=mysql_fetch_array(mysql_query("SELECT name FROM table_name WHERE score='100' order by score desc"));
echo $que[0]; 또는 $que[name]; 위 예제는 반복문으로 limit 3으로 3개 호출했지만, 단 이때는 1row만 불러옵니다.
검색에 php mysql명령어 찾아보시면 많은 정보가 검색됩니다.
책만해도 뚜껍하게 있을정도구요. 자주사용되는 몇개정도는 외워두는게 좋습니다.

rimsoft님의 댓글

rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글

열강?하시는 분이 계시니 힘이 납니다^^
생각에 가능할지 모르겠지만.. 기본강의가 끝나더라도 뭐(웹표준??)좀 서로공유되도록 노력해보겠습니다..

Total 18건 1 페이지
PHP 강좌 목록
번호 제목 글쓴이 날짜 조회
공지 강좌 들어가기전에.. 댓글6 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-11 3162
17 php 초급에서 반드시 짜 보아야 할 것들 댓글1 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-09 3680
16 알고리즘과 경우의 수 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-02 3380
15 그누보드 게시판 테이블 그리고 댓글 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-02 6814
14 웹표준? 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-13 2940
13 특강. [그누보드를 알자4] 그누보드 스킨(board-list.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-07 6085
12 특강. [그누보드를 알자3] 그누보드 스킨(board-write.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-21 22250
11 특강. [그누보드를 알자2] 그누보드 스킨 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-14 8515
10 특강. [그누보드를 알자1] 그누보드 루트파일들 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-08 7529
9 7강. 썸네일 댓글5 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-07 3273
8 6강. 중간 마무리 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-03 2310
7 5강. html에서 form 개념과 php, mysql 연관성 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-27 4555
열람중 4강. [문법] 반복문 for, while 댓글7 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-25 3251
5 [그누보드관련] 쉬는 타임 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-21 3368
4 3강. [문법] 조건문 if, else, elseif, switch 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 10939
게시물 검색

접속자집계

오늘
28
어제
82
최대
425
전체
358,810
그누보드5

림소프트 / 515-08-36933 / 제2014-경북경산-00079 / 양명주 / ifnelse@gmail.com
© Copyright rimsoft.co.kr . All Rights Reserved.

댓글이 달렸습니다.

모바일 버전으로 보기