반복문이라는건 말 그대로 똑같은 작업을 반복하게 만드는거죠...
물론 반복에는 어느선까지만...이라는 조건이 있고요..
이 조건이 잘못되면 컴터는 죽을때까지 반복을 합니다...(-_-무식하긴..)
반복문에는 크게~ for와 while이 있습니다...
(뭐 또 다른게 있긴하죠?;;;)
암튼...for만 알아도 반복문은 끝납니다...
우선 for의 문법은...
for(초기값;조건;증가값)
{실행문}
위와 같습니다.
임의의 변수에 초기값을 주고 한번 반복할때마다 증가값만큼 증가하면서
조건에 맞으면 그만두는거죠;;; 예제를 봅시다...
test.php를 꺼내시고...소스를 다음과 같이 수정합니다.
<?
for($i=0 ;$i<5 ;$i++)
{$a++;}
echo $a;
?>
초기값으로 $i에다가 0을 줬죠...그리고 조건에서 $i<5 즉, $i가 5보다 작을때까지 입니다.....0이니까 5보다 작죠?...
그래서 { }를 한번 실행합니다....$a에는 값이 없었으니 $a++이니까 1이 되겠죠...
다시 올라갑니다....올라가면서 증가값만큼 $i가 증가하죠..$i++이니까 이제 $i는 1입니다.
자~ 다시 한바뀌 돌죠....$a++이니까 $a는 3가 되죠...
다시 올라가서 $i는 3이 되고...5보다 작으니까 또 돌죠...
그럼 이제 $a는 4가되죠...다시 올라가서 $i는 4....5보다 작으니까 또 돌고..
$a=5가 되었습니다.....다시 올라가서 $i는 5가 되죠.....
또 돌까요?......
아니죠..^^ 조건에서 $i<5 니까 5<5는 거짓이죠....
그래서 for문을 빠져나옵니다...
결국 화면에는 5가 찍히는거죠...;;
복잡하게 생각할것 없습니다.....
그냥 단순히 조건이 참인 동안만 죽어라 반복합니다.
보통 어느 언어를 배우든 반복문의 예제로 1부터 100까지의 합을 구하는걸 많이 하는데......우리도 한번 해보죠;;;
<?
for($i=1;$i<=100;$i++)
{$a=$a+$i;}
echo $a;
?>
쉽죠?....이렇게 하면 1부터 어디 까지든 더할수 있습니다.
구지 설명하자면 $i가 1부터 100까지 도는 거죠...
$a에는 이전의 자기 자신과 $i가 더해지는 겁니다...
이해가 안가신다면...풀어서 한번 보죠;;;
$a $i $a(최종값)
1) 0 + 1 = 1
2) 1 + 2 = 3
3) 3 + 3 = 6
4) 6 + 4 = 10
.
.
이해가 가시리라 믿습니다....
이제 좀더 재미난걸 해볼까요?...
이런경우가 가끔있죠....
메뉴페이지를 만드는데 메뉴 버튼이 10개가 있습니다.
버튼이미지이름은 1.gif부터 10.gif라고 하죠;;;
이럴때 for문으로 한번 돌려볼까요?
<?
for($i=1;$i<=10;$i++)
{
echo"<img src=${i}.gif><br>";
}
?>
결과는?
<img src=1.gif><br><img src=2.gif><br><img src=3.gif><br><img src=4.gif><br><img src=5.gif><br><img src=6.gif><br><img src=7.gif><br><img src=8.gif><br><img src=9.gif><br><img src=10.gif><br>
위와 같이 나오겠죠;;;
그런데 이럴때 이렇게 해주면 소스가 이뿌게 나옵니다.
<?
for($i=1;$i<=10;$i++)
{
echo"<img src=${i}.gif><br>
";
}
?>
echo문 끝에
를 추가했죠....이건 한줄을 띄우라는것입니다.
<br>이랑은 다른개념인데...텍스트문서에서 한줄띄우기로 보시면 됩니다.
결국
를 아무리 많이 쳐봐야 브라우져에서는 똑같습니다.
단지 소스에서 한줄씩 떨어지게 되는거죠;;;
자 이번엔 좀더 난이도 있는 예제를 해보도록하죠;;;
ㅡ.ㅡ구구단 입니다...
자~ 해보세요;;;;
-_-;;애매하죠?
2단부터 9단까지니까....2부터 9까지 돌리면 되겠는데;;;
그 속이 문제로군요;;; 천천히 봅시다....
우선 2단부터 9단까지 만들죠;;
<?
for($i=2;$<=9;$i++)
{ }
?>
됐습니다;;
그럼 이제 저 소스와는 따로....2단만 만들어 볼까요?
<?
for($k=1;$k<=9;$k++)
{echo "2 x $k = ".(2*$k);}
?>
맞죠? ($i가 아닌 $k로 준건은 위에것과 겹치는것을 방지하기 위해서입니다)
.(점연산자)로 합친것 뿐인데....결국은 2 x 1 = 2 , 2 x 2 = 4...이렇게 나가겠죠? (수식연산은 따옴표 밖에서 해야 됩니다)
그럼이제 이 두개의 for문을 합쳐버리죠;;;
두번째 것을 처음것 속에 넣으면 되겠습니다~~~~~합체!!!
<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "2 x $k = ".(2*$k);}
}
?>
끝난게 아니죠....이렇게 실행하면 2단만 죽어라 나옵니다...
이렇게 바꿔줘야죠....2를 $i로...
<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k;}
}
?>
됐죠?....
모양도 이뿌게 하기 위해서....줄좀 띄워줄까요.?
<?
for($i=2;$<=9;$i++)
{
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k."<br>";}
}
?>
점연산자를 헷갈리지 마세요....
점으로 구분된 세 단락이 보이시죠?
("$i x $k = ") ($i*$k) ("<br>")
이렇게 말이죠....$i*$k에 따옴표를 안붙인 이유는 앞서 얘기했듯이...
따옴표속에서는 계산이 되지 않기 때문입니다.
자 그럼 이제 몇단 인지도 한번 찍어볼까요?
-_-엇;;;근데 어떻게 해야되죠?
-_,- 이렇게~
<?
for($i=2;$i<=9;$i++)
{
echo "<br>${i}단<br>";
for($k=1;$k<=9;$k++)
{echo "$i x $k = ".$i*$k."<br>";}
}
?>
-_-?됐죠?;;
자 이번엔 while문입니다....
형태는.....
while(조건)
{실행문}
위와 같습니다.....
그냥 조건이 참일 동안 반복하는것인데...for랑은 약간 다르죠?
1부터 100까지 한번 더해보죠;;
<?
$i=1;
while($i<=100)
{
$a=$a+$i;
$i++;
}
echo $i;
?>
$i에다가 1을 주고...while문에 들어갑니다....
100보다 작거나 같죠?..참이니까 한번 돕니다...
돌고 나면 $i++이니까 $i는 2가 되죠...
그럼 아까 for문에서 처럼 돌게 되는거죠...
돌다가 돌다가......$i가 101이 되는순간 while문을 빠져나옵니다..
반복문은 하다보면 재밌고도 -_- 짜증납니다...
이해를 하셔야 겠죠;;;
'PHP∵SCRIPT' 카테고리의 다른 글
zend encode 를 사용하지 않고 PHP 소스 안보이게 하는 방법 ? (0) | 2014.03.28 |
---|---|
원격지 파일의 존재 여부를 체크 사용자 함수 (0) | 2014.03.26 |
PHP에서 특수문자 없애는 정규표현식 (0) | 2014.03.25 |
비교연산과 조건문... (0) | 2014.03.25 |
PHP 난수를 이용한 쿠폰번호 생성하기 (0) | 2014.03.23 |
PHP 버블소트 알고리즘 (0) | 2014.03.23 |
리눅스 ftp 명령어 모음 (0) | 2014.03.23 |
리눅스 특정 문자열 찾기 (0) | 2014.03.23 |
댓글