본문 바로가기

웹프로그래밍

[PHP 프로그래밍 입문 4장 반복문] while문, for문, do ~ while문

while문

1~10 출력

<?php
$i = 1;
while($i <= 10){
	echo "$i<br>";
	$i++;
}

?>

정수 1~10 합계 구하기

while문 안에서 $sum 정의하면 오류가 난다. 

while 반복문 밖에 먼저 정의하자.

<?php
$i = 1;
$sum = 0;
while($i <= 10){
	$sum += $i;
	$i++;
}
echo $sum;

?>

정수 100~300 중 3의 배수 합계 구하기

while ( ) 괄호 안에있는 숫자 늘려주는 거 확인 !! $i++ 

모든 문장에 세미콜론 붙였는지 꼭 확인 !!

<?php
$i = 100;
$sum = 0;
while($i <=300){
	if($i %3 ==0){
        $sum += $i;
	}
	$i++;
}

echo $sum;

?>

 

 

<?php ?> 안에 html 태그 써서 결과 출력하려면 밑에와 같은 방식만 가능

<?php
 echo "<p>안녕안녕</p>";
?>

정수 1~100 중 3의 배수가 아닌 정수 구하기

10개씩 끊어서 나오도록 한줄에 숫자 10개씩

<?php
//10개씩 정렬하기
$i = 1;
$count = 0;
while($i <=100){
	if($i %3 !=0){
        echo "$i ";
        $count ++;
	}
	if($count % 10 == 0){
        echo "<br>";
	}
	$i++;
}

?>
<?php
$i = 1;
$count=0;
while($i <=100){
 if($i % 3 != 0){
 	echo $i." ";
    $count++;

    if($count % 10==0){
    	echo "<br>";
    }
 }
$i++;
}
?>

 

 

인치를 센티미터로 변환하기

10~100 인치이고 극간은 10

<tr>은 같은 행에 위치하도록

<th>는 <td>보다 글씨가 좀 두꺼워서 제목에 

<?php ?> 안에 html 태그를 쓰려면 반드시 echo문하고 같이 써야 되고, " " 큰 따옴표 안에 써야 된다. 

(ex) echo "<br>";

이게 헷갈린다면 html 태그를 <?php ?> 이 부분에 넣지 말고 그냥 빼서 사용해라. 

<table>

<tr> <th> </th> </tr>

<tr><td></td></tr>

</table>

반복문 안에는 숫자 변환부분만 넣어야 한다.

하지만 이 경우에 빼서 사용하게 되면 반복문 돌릴 때마다 값이 기록되지 못하기 때문에 반드시 while문 안에 html 태그를 넣어야 한다. 

<?php ?>안에 html 태그 넣어서 사용하는 경우 !!!! " " 큰 따옴표와 echo 문을 같이 사용하여야 한다!!

<?php
$id = "ididid";
$pass = 2222;

echo "<table><tr><th>$id</th></tr>
      <tr><td>$pass </td></tr></table>";
?>

<?php ?>밖에 html 태그 넣어서 사용하는 경우 !!!! 변수 출력을 위해 php 축약형을 사용한다. <?= ?>

<?php
$id = "ididid";
$pass = 2222;

?>

<table>
	<tr><th><?= $id ?></th></tr>
		<tr><td><?= $pass ?></td></tr>
	</table>

모두 같은 결과가 나온다는 것을 알 수 있다. 

 

<table border="1"> 
<tr><td>인치</td><td>센티미터</td></tr>


<?php
$inch = 10;
while($inch <=100){
   $cm = $inch * 2.54;
	$inch =$inch +10;
}
?>
<tr> <td><?=$inch?></td><td><?=$cm?></td><tr>

	
</table>

<?php
//10개씩 정렬하기
$inch = 10;

echo '<table border=1>';
    echo "<tr><th>인치</th><th>센티미터</th></tr>";
while($inch <= 100){
	 $cm = $inch*2.54 ;
       echo "<tr><td>$inch</td><td>$cm</td></tr>";

	$inch = $inch +10;
}
	echo '</table>';

?>

2단 구구단 표 만들기

<h3>2단 구구단 표 만들기</h3>

<?php
$a = 2;
$b = 1;
echo '<table border=1>';
while($b <=9){
	$result = $a*$b;
	echo "<tr><td>$a x $b = $result  </td></tr>";
	$b++;
}
	echo '</table>';

?>

td의 align='center'는 글자 정가운데로 정렬

table의 border='1'은 테두리 만들고 width='100'은 너비 지정

<h1>2단 구구단 표 만들기</h1>
<?php
$i = 1;
while($i <= 9)
{
	$r = 2* $i;
	echo "<table border='1' width='100'><tr><td align='center'> 2 x $i = $r </td></tr></table>";
	$i++;
}
?>

for문

정수 1~10 출력

<?php

for($i = 1; $i <=10; $i++){
	echo "$i <br>";
}

?>

정수 1~10 합계 구하기

$sum = 0; 초기화하는 부분 반드시 써줄 것!!!! for문이나 while문 모두 써줘야 함

<?php
 $sum = 0;
for($i = 1; $i <=10; $i++){
	$sum += $i;
}
echo $sum;

?>

1~100 중 5의 배수 합계 구하기

<?php
$sum = 0;
for($i = 1; $i <=100; $i++){
	if($i % 5 ==0){
		$sum +=$i;
	}
}
echo $sum;

?>

500~700 중 4의 배수가 아닌 정수 출력하기

한 줄 당 숫자 10개씩

count 변수 위치 주의 !!!

<?php
$count = 0;
for($i = 500; $i <=700; $i++){
	if($i % 4 !=0){
		echo "$i ";
		$count ++;
	if($count % 10 ==0){
		echo "<br>";
	}
	}
	
}

?>
<?php
$count = 0;
$ok = false;

for($i = 500; $i <=700; $i++){
     if($i % 4 !=0){
	    echo $i." ";
	    $count ++;
         $ok = true;
	}
	if($count !=0 && $count %10 == 0 && $ok ==true){
		echo "<br>";
		$ok = false;
	}

}

?>

 

섭씨를 화씨로 변환

<?php ?> 안에서는 echo를 통해서만 html 태그를 출력할 수 있지만 밖에서는 그냥 출력됨

<?php
// PHP 태그 내에서는 echo를 사용하여 HTML 코드를 생성
echo "<h1>Hello, World!</h1>";
?>

<!-- PHP 태그 외부에서는 직접 HTML 코드를 작성 -->
<p>This is a paragraph outside PHP tags.</p>
<h3> 섭씨 -> 화씨 온도 변환 </h3>
<table border="1">
	<tr><th>섭씨</th><th>화씨</th></tr>
<?php
for($c = -15; $c <=35; $c=$c+5){
	$f = ($c * 9/5) +32;
	echo "<tr><td>$c</td><td>$f</td></tr>";
}

?>
</table>
<h1>섭씨 -> 화씨 온도 변환</h1>
<table border='1' width="200">
	<tr><th>섭씨</th><th>화씨</th></tr>
	<?php
for($c = -15; $c <=35; $c+=5){
	  $f = ($c*9/5) +32;
    echo "<tr align='center'><td>$c</td><td>$f</td></tr>";
}
?>

</table>

while문 버전

<h1>섭씨 -> 화씨 온도 변환</h1>
<table border='1' width="200">
	<tr><th>섭씨</th><th>화씨</th></tr>
	<?php
	$c = -15;
	while($c<=35){

       $f = ($c*9/5) +32;
    echo "<tr align='center'><td>$c</td><td>$f</td></tr>";
		$c+=5;

	}

?>

</table>

이중 for문

이중 for문으로 구구단 표 만들기 1

테이블 아니니깐 테이블과 관련한 <table> <tr> <th> <td> 쓸 필요 없음

<?php
echo "-------------<br>";
for($i= 2; $i<=9;$i++){
	for($j=1;$j<=9;$j++){
		$r = $i*$j;
        echo "$i x $j = $r <br>";
	}
		echo "-------------<br>";

}
?>

이중 for문으로 구구단 표 만들기 2

다시 해보기 !!!!!!!!

<style >
	table{
		 border-collapse: collapse;
		 width: 600px;
	}
	td{
		 border: solid 1px black;
	}
</style>
<h2>- 구구단 표</h2>
<table>
	<tr>
		<td>2단</td>
		<td>3단</td>
		<td>4단</td>
		<td>5단</td>
		<td>6단</td>
		<td>7단</td>
		<td>8단</td>
		<td>9단</td>

	</tr>
<?php
for($i= 1; $i<=9;$i++){
	  echo "<tr>";
	for($j=2;$j<=9;$j++){
		$r = $j*$i;
		echo "<td>{$j}x{$i}= $r</td>";
	}
echo "</tr>";		
}
?>
</table>

tr 태그의 위치 중요하다. <td> 태그들을 한 행에 놔주는 게 tr 태그니깐!!!

<h1>구구단 표</h1>
<style>
	table{
		border-collapse: collapse;
	}
</style>

<table border='1' width="700" >
	<tr align='center'><td>2단</td><td>3단</td><td>4단</td><td>5단</td><td>6단</td><td>7단</td><td>8단</td><td>9단</td></tr>
<?php
for($i = 1; $i <=9; $i++ ){
	echo "<tr align='center'>";
	for($j = 2; $j <=9; $j++){
		$r = $j * $i;
       echo "<td> $j x $i = $r </td>";
	}
	echo "</tr>";
}

?>
</table>

 

별표 그리기는 3단계로 코드 짜면 된다. 

별, 공백, <br> 태그로 하나의 행이 구성됨 !!

1. 하나의 행을 출력하기 위한 코드 작성

2. 행의 개수만큼 for문으로 감싸기

3. 첫번째 행이 반복되면 원하는 결과가 아니므로 원하는 결과가 나오기 위해 바꾸어야 할 값들 바꾸기

 

<br> 태그는 띄어쓰기이고, &nbsp;는 공백 넣을 때 쓰는 것!!!

별표 출력 1

<?php


for($i = 1; $i<=10; $i++){
	for($j = 1; $j <=$i; $j++){
         echo "*";
	}
	 echo "<br>";

}
?>

별표 출력 2

<?php
for($m = 1; $m <=10; $m++){
//공백 
for($i = 9; $i>=$m; $i--){
	echo "&nbsp";
}
//별
for($j = 1; $j <=$m; $j++){
	echo "*";
}
echo "<br>";

}
?>

 

별표 추가 문제

<?php
for($j = 1; $j <=10; $j ++){
for($i = 10; $i>=$j; $i--)
{
	echo "*";
}
echo "<br>";
}
?>

<?php
for($m = 1; $m <=5; $m++){

//공백
for($i = 4; $i >=$m; $i--){
	echo "&nbsp;";
}
//별
for($j = 1; $j<=2*$m-1; $j++ ){
	echo "*";
}
echo "<br>";
}

?>

<?php
for($m = 1; $m <=5; $m++){
//공백 0 -> 4까지 늘어남 !
for($j = 1 ; $j < $m ; $j++){
	echo "&nbsp;";
}
//별
for($i = 9; $i>=2*$m-1; $i--){
	echo "*";
}
//다음줄
echo "<br>";
}
?>

do ~while문

정수 1~10의 합계 구하기

while( ) ; 세미콜론 주의 !!!!!!! 안 붙이면 오류 남

do {
    // 실행 코드
} while (조건);
<?php

$i = 1;
$sum = 0;
do{
$sum+=$i;
$i++;
}while($i<=10);

echo $sum;
?>

 

조건식 확인하기 전에 루프 내의 문장 한번 더 실행해야 함

<?php
$i = 1;

do {
echo $i;
}while($i > 10);


?>

 

<?php
$i = 1;

while($i > 10){
echo $i;
}


?>

값 출력  xxx 조건 만족 안 하니깐 

 

while문이 do-while문보다 훨씬 직관적이고 편리하다. 

 

 

continue와 break는 둘 다 반복문을 중지시킨다. 

break는 반복문을 완전히 중지

continue는 현재 진행되고 있는 반복의 흐름만 중지하고 반복문 자체는 지속

$i = 5일 때 반복문을 종료시켜버림
$i = 5일 때 그 반복문의 흐름만 실행 x -> $i++로 가서 다음 반복문 흐름 실행

 

이중 for문은 

바깥쪽 for문 1번 실행 -> 안쪽 for문 모두 실행

0 -> 0~9

1 -> 0~9

.....

 

연습 문제

01.

<?php

$num = 1;

while($num <=1000){
    if($num %2 == 0)
    	echo $num."&nbsp";
	$num++;
}

?>

02.

<?php
$count=0;
for($i = 100; $i<=500; $i++){
	if($i % 2 == 0){
       echo "$i ";
       $count++;

       if($count%2==0){
       	echo "<br>";
       }

	}
}
?>

 

03.

<?php
$i = 300;
$sum = 0;
while($i <=3000){
 if($i % 2 ==1){
 	$sum +=$i;
 }
 $i++;
}
echo "300~3000 중 홀수의 합 : $sum";
?>

04.

<br> 태그!!!!!!

<?php
$sum = 0;
for($i = 100; $i <= 900; $i++){
	if($i % 3!=0){
        $sum+=$i;
        echo "{$i}까지의 합 : $sum<br>";
	}
}
?>

 

05.

<br> 태그

<?php

$result=1;
for($i=1;$i<=10;$i++){
	$result*=$i;
 echo "{$i}! = $result<br>";
}
?>

06.

<?php
$count=0;
for($i = 1; $i <= 500; $i++){
	if($i % 5 ==0){
		echo "$i ";
        $count++;

        if($count % 10 ==0){
        	echo "<br>";
        }
	}
}
?>

07.

<?php
echo "---------<br>";
echo "야드   미터<br>";
echo "---------<br>";
for($yard = 10; $yard <=300; $yard+=10){
$meter = $yard * 0.9144;

echo "$yard $meter<br>";

}
echo "---------<br>";

?>

08.

<style>
	table{
		border:1px solid black;
		border-collapse:collapse;
		width:200;
	}
	td{
		border:1px solid black;
		text-align:center;
	}
</style>
<table>
<tr><td>야드</td><td>미터</td></tr>
<?php

for($yard = 10; $yard <=300; $yard+=10){
$meter = $yard * 0.9144;

echo "<tr><td>$yard</td><td> $meter</td></tr>";

}

?>
</table>

09.

<?php
echo "---------<br>";
echo "제곱미터 평<br>";
echo "---------<br>";
for($cm = 10; $cm<=200; $cm+=10){
  $p = $cm*0.3025;
  echo "$cm $p<br>";
}
echo "---------<br>";

?>