Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

쟝이의 세상

php <조건문 switch, 반복문> 본문

수업내용

php <조건문 switch, 반복문>

zyangee 2024. 8. 29. 17:04

 조건문 

switch문

: 다중 if문 대신 사용 가능

사용 예시)
switch(변수) {
  case 값1: 코드1; 코드2; break;
  case 값2: 코드3; 코드4; break;
  ....
  default: 코드7; 코드8; break;
}
<?php
/* 초등학교 급식비를 계산하는 프로그램
1학년: 3만원
2학년: 3만5천원
3학년: 4만원
4학년: 4만5천원
5학년: 5만원
6학년: 5만5천원 */

	$grade=2;
	switch($grade) {
		case 1:
			echo "1학년 급식비: 3만원";
			break;
		case 2:
			echo "2학년 급식비: 3만5천원";
			break;
		case 3:
			echo "3학년 급식비: 4만원";
			break;
		case 4:
			echo "4학년 급식비: 4만5천원";
			break;
		case 5:
			echo "5학년 급식비: 5만원";
			break;
		case 6:
			echo "6학년 급식비: 5만5천원";
			break;
		default:
			echo "학년을 잘못 입력하셨습니다.";
			break;
	}
?>

/*
2학년 급식비: 3만5천원
*/

 

----> 위의 switch문을 다중 if문으로 바꾸면

<?php
	$grade=4;
	if($grade==1)
		echo "1학년 급식비는 <b>3만원</b> 입니다.";
	elseif($grade==2)
		echo "2학년 급식비는 <b>3만5천원</b> 입니다.";
	elseif($grade==3)
		echo "3학년 급식비는 <b>4만원</b> 입니다.";
	elseif($grade==4)
		echo "4학년 급식비는 <b>4만5천원</b> 입니다.";
	elseif($grade==5)
		echo "5학년 급식비는 <b>5만원</b> 입니다.";
	elseif($grade==6)
		echo "6학년 급식비는 <b>5만5천원</b> 입니다.";
	else
		echo "학년을 잘못 입력하였습니다.";
?>

/*
4학년 급식비는 4만5천원 입니다.
*/

 


반복문

while문

** while문에서 초기값을 설정하는 것은 while문 밖에서 설정해준다.

while의 표현식이 True면 코드 블록을 반복하고, 표현식이 False가 되면 코드 블록을 빠져나온다.

표현식의 값은 루트의 시작에서 매번 체크가 됨
<?php
	$num=2;
	echo ("<html><body>
		<h3>2단 구구단 표 만들기</h3>
		<table border='1' width='100'>");
	$b=1;
	$c=0;
	while($b<=9) {
		$c=$num*$b; //2단 연산
		echo "<tr><td>$num x $b = $c</td></tr>";
		$b++;
	}
	echo ("</table></body></html>");
?>

위의 while문 결과 화면

 

HTML을 이용하여 php코드를 작성

구구단 연산한 값을 table 태그에 넣어 결과 값 출력

** while문이 실행되는 과정 설명 **
b=1일 때, 2*1하여 c의 값은 2가 된다.
-> while문 마지막에 b++(1증가)하여 b는 2가 된다.
b=2일 때, 2*2하여 c의 값은 4가 된다.
-> while문 마지막에 b++하여 b는 2가 된다.
....
b=9일 때, 2*9하여 c의 값은 18이 된다.
-> while문 마지막에 b의 값을 1 증가시켜 10이 된다.
b=10일 때, 표현식의 결과가 False가 되므로 while문을 빠져나간다.

 

<?php
//1부터 10까지 더하는 프로그램
	$num=1;
	$total=0;
	
	while($num<=10){
		echo "{$total}+{$num}=";
		$total+=$num;
		echo "{$total}<br>";
		$num++;
	}
?>

/*
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
15+6=21
21+7=28
28+8=36
36+9=45
45+10=55
*/
** while문이 실행되는 과정 설명 **
num=1일 때, total=0 이므로 0+1=1, 결과로 나온 1이 total값이 된다.
-> num값은 while문 마지막에 num++(1증가)하여 num의 값은 2가 된다.
--------연산한 후 num의 값 증가 --------
num=2일 때, total=1 이므로 1+2=3, 결과로 나온 3이 total값이 된다.
-> num값은 while문 마지막에 num++(1증가)하여 num의 값은 3이 된다.
num=3일 때, total=3 이므로 3+3=6, 결과로 나온 6이 total값이 된다. 
-> num값은 while문 마지막에 num++(1증가)하여 num의 값은 4가 된다.
....
num=10일 때, total=45 이므로 45+10=55, 결과로 나온 55가 total값이 된다.
-> num값은 while문 마지막에 1증가하여 11이 된다.
num=11일 때 while문 조건식이 False가 되므로 while문을 빠져나온다.

 

<?php
//1부터 100 사이에 있는 5의 배수의 합을 구하는 프로그램
	$num=1;
	$sum=0;
	while($num<=100){
		if($num%5==0){
			$sum+=$num;
		}
		$num++;
	}
	echo "1부터 100사이의 5의 배수의 총합: {$sum}";
?>

/*
1부터 100사이의 5의 배수의 총합: 1050
*/
** while문이 실행되는 과정 설명 **
num=1일 때, 1%5의 값이 0이 아니므로 if문을 수행하지 않고 마지막의 num값만 증가시킨다.
결과 값은 num=2, sum=0
num=2일 때, 2%5의 값이 0이 아니므로 if문을 수행하지 않고 마지막의 num값만 증가시킨다.
결과 값은 num=3, sum=0
...
num=5일 때, 5%5의 값이 0이므로 if문의 sum=sum+num을 수행
-> 0+5의 값을 sum에 저장하고, num의 값을 증가시킨다.
결과 값은 num=6, sum=5
num=6일 때, 6%5의 값이 0이 아니므로 if문 수행하지 않음, num의 값만 증가시킨다.
결과 값은 num=7, sum=5
...
num=10일 때, 10%5의 값이 0이므로 if문의 sum=sum+num을 수행
-> 5+10의 값을 sum에 저장하고, num의 값을 증가시킨다.
결과 값은 num=11, sum=15
.... num=100까지 수행하여 while문을 빠져 나와 최종적으로 저장되어있는 sum의 값을 출력

 

 

for문

** for문에서의 초기값은 괄호 안에서 설정할 수 있다.

사용 예시)
for (초기값; 조건; 증감) {
     코드1;
}

 

※ HTML 코드 속에 php구문을 꽂아서 반복문을 구현 -> php파일로 저장 (html파일로 저장 시 php구문이 실행되지 않음)

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>게시판 리스트 - for문 연습</title>
</head>
<body>
	<h3>▶ 게시판 목록보기</h3>
	<table border="1" width="600">
		<tr align="center" bgcolor="#cccccc">
			<td>번호</td>
			<td>제목</td>
			<td>글쓴이</td>
			<td>날짜</td>
		</tr>
<?php
	$i=1;
	$name="홍길동";
	$date="2024-08-30";
	
	for($i=1; $i<=10; $i++){
		$title="게시판 제목".$num;
		echo "<tr>
			<td>{$i}</td>
			<td>{$title}</td>
			<td>{$name}</td>
			<td>{$date}</td>
		</tr>";
	}
?>
	</table>
</body>
</html>

위의 html+php 코드 결과 화면

** for문 설명 **
for문 안에 tr태그와 td태그가 모두 들어가는 것으로 행의 반복이 이루어진다.

변수 i의 반복
-> 초기값=1; 조건은 10이하; 초기값을 1씩 증가

 

<!DOCTYPE html>
<html>
<body>
	<h3>구구단표</h3>
	<table border="1" width="900">
		<tr bgcolor="#cccccc">
			<th>2단</th>
			<th>3단</th>
			<th>4단</th>
			<th>5단</th>
			<th>6단</th>
			<th>7단</th>
			<th>8단</th>
			<th>9단</th>
		</tr>
<?php
	for($i=1; $i<10; $i++){
		echo "<tr align='center'>";
		for($num=2; $num<10; $num++){
			$total=$i*$num;
			echo "<td>{$num} x {$i} = {$total}</td>";
		}
		echo "</tr>";
	}
?>
	</table>
</body>
</html>

위의 중첩 for문 결과 화면

** for문 설명 **
i=1일 때, tr 태그를 먼저 선언해주고 안에 있는 두번째 for문이 돌아간다.
-> 즉, i가 1일 때, num은 2~9까지 반복이 일어남
num=9까지 완료되었을 때, 두번째 for문이 종료되고 tr태그가 닫히면서 행 하나가 완성된다.
i=2일 때, 또 다시 tr 태그를 선언해주고 안에 있는 두번째 for문이 돌아간다.
-> 즉, i가 2일 때, num은 2~9까지 반복이 일어남
num=9까지 완료되었을 때, 두번째 for문이 종료되고 tr태그가 닫히면서 두번째 행이 완성된다. 

i를 9까지 반복하여 테이블의 행을 만든다.