본문 바로가기

웹프로그래밍

[PHP 프로그래밍 입문 3장] 조건문 if문과 switch문

조건문의 if ( ) { } 에서 ( ) 부분에는 true나 false boolean 값이 온다. 

비교 연산자와 boolean 값이 조건문에서 사용된다. 

 

if

3.php 파일의 결과는 12345

4.php 파일의 결과는 5

 

else

<?php
if(true){
 echo 1;
}
else{
echo 2;
}
?>

조건이 true이므로 1이 출력된다. 

<?php
if(false){
 echo 1;
}
else{
echo 2;
}
?>

조건이 false이므로 2가 출력된다. 

 

else if

if문 다음에 오고, else문 앞에 와야 한다. 

else if는 else와 다르게 조건을 가지고 있다. 

if는 else에 종속되어있으므로 조건을 가질 필요가 없지만 else if는 if가 거짓일 경우 else if의 조건이 true인 경우 echo문 실행!

여러 개 나올 수 있다. 

첫번째 if문이 거짓일 때나 그 전에 있는 else if가 거짓일 경우 실행된다. 

<?php
if(false){
 echo 1;
}
else if(true){
	echo 2;
}
else if(true){
	echo 3;
}
else{
echo 4;
}
?>

2가 출력된다. 

<?php
if(false){
 echo 1;
}
else if(false){
	echo 2;
}
else if(true){
	echo 3;
}
else{
echo 4;
}
?>

3이 출력된다. 

<?php
if(false){
 echo 1;
}
else if(false){
	echo 2;
}
else if(false){
	echo 3;
}
else{
echo 4;
}
?>

4가 출력된다. 

 

짝수와 홀수 판별

<?php
$n = 27;

if($n%2 ==0)
{
	echo "$n : 짝수";
}
else{
	echo "$n : 홀수";
}
?>

 

나이에 따라 입장료 판별

<?php
$age = 66;
$fee = "5000원";

if($age>=65){
	$fee = "무료";
}

echo "나이 : $age 세<br>";
echo "입장료: $fee";
?>

 

배수 판별

if문 조건식 다음에 한 문장만 있으면 { } 생략 가능

and && 논리연산자

<?php
$num = 32;
$result ="3의 배수도 5의 배수도 x";

if($num %3 == 0)
{
	echo "3의 배수다";
}
else if($num % 5 ==0){
	echo "5의 배수다";
}
else if($num %3==0 && $num %5 ==0){
	echo "3의 배수이면서 5의 배수";
}
else{
	echo"$num : $result";
}
?>

 

배수 판별 2

<?php
$besu = 3; //변수
$num = 12; //배수 여부 판별하려는 수

if($num % $besu ==0){
	echo "$num : $besu"."의 배수이다.";
}
else{
		echo "$num : $besu"."의 배수가 아니다.";
}
?>

 

회원 레벨에 따라 로그인 기능 판별하기

<?php
$level = 7;
echo "회원 레벨 : $level<br>";

if($level <= 7 and $level >=1){
	echo "로그인 가능합니다!";
}
else{
	echo "로그인이 가능하지 않습니다!";
}
?>

 

체중 조절 필요 여부 판단

<?php
$h = 170;
$w = 50;
$a = ($h - 100)*0.9;

echo "키 : $h<br>";
echo "몸무게 : $w<br>";

if($w > $a){
	echo "체중 조절 필요합니다.<br>";
}
else{
	echo "체중 조절 필요하지 않습니다.<br>";
}
?>

 

점수에 따라 등급 판별하기

중간에 생략함 코드 너무 많아서

<?php
$score = 65;

if($score >= 95){
	$grade = "A+";
}
else if($score >=90){
	$grade = "A";
}
else{
	$grade ="F";
}
echo "입력된 점수 : $score 점 <br>";
echo "등급 : $grade";
?>

 

놀이공원 입장료 계산하기

$after == "yes" 부분에서 = 으로 쳐서 4000원 나왔었음

비교 연산자는 ==라는 것 다시 기억해라.

<?php
$age = 68;

$welfare = "no"; //복지 카드
$youkong = "yes"; //유공자
$after = "no";

if($age <3){
	$fee = "무료";
}
else if(($age >= 3 && $age <= 13) || ($after=="yes")){
	$fee = "4000원";
}
else if(($age >=14 && $age <= 18) || ($age >= 70)
||($welfare =="yes") || ($youkong == "yes")){
	$fee = "8000원";
}
else{
	$fee="1000원";
}

echo $fee;
?>
<?php
//4가지의 case가 존재
//입장료 무료

$age = 17;
$welfare = "no";
$yukong = "yes";
$after="yes";

if($age <3){
$fee = "무료";
}
//특별 할인
else if(($age >=3 && $age <=13)||($after=="yes")){
$fee = 4000;
}
//할인
else if(($age >=14 && $age <=18)||($age >=70) ||($welfare=="yes")
||($yukong=="yes")){
$fee = 8000;
}
//일반
else{
$fee = 10000;
	}

echo "입장료 : $fee";
?>

<?php
//4가지의 case가 존재
//입장료 무료

$age = 33;
$welfare = "no";
$yukong = "no";
$after="no";

if($age <3){
$fee = "무료";
}
//특별 할인
else if(($age >=3 && $age <=13)||($after=="yes")){
$fee = 4000;
}
//할인
else if(($age >=14 && $age <=18)||($age >=70) ||($welfare=="yes")
||($yukong=="yes")){
$fee = 8000;
}
//일반
else{
$fee = 10000;
	}

echo "입장료 : $fee";
?>

if문 중첩

정수 3개를 값이 큰 순서로 정렬

큰 틀 먼저 잡아두고 max1, max2, max3 적기

<?php
$a = 2;
$b = 6;
$c = 9;
//큰 틀에서 2개
//각각의 틀에서 2개
//큰 틀의 if문에서 2개

if($a> $b){ //a가 b보다 큰 경우 a > b
 if($a>$c){ //a가 c보다도 큰지?
 	$max1 = $a;
   if($b>$c){ // a가 제일 크니깐 c는 b랑 비교 !
   	//a> b> c
     $max2 = $b;
     $max3= $c;
   }
   else{ //a > c> b
  $max2 = $c;
     $max3= $b;
    }
  }
  else{ //c가 a보다 커 c > a
  	//c > a > b
$max1 = $c;
$max2 = $a;

     $max3= $b;
  }

}
else{ //b가 a 보다 큰 경우 b > a
	if($b>$c){ //b가 c보다도 큰지?
		if($a>$c){ // b가 제일 크니깐 a는 c랑 비교!
		// b > a > c
$max1 = $b;
$max2 = $a;

     $max3= $c;
		}
		else{ 
		//b > c> a
$max1 = $b;
$max2 = $c;

     $max3= $a;
		}
	}
	else{ // c > b
            //c > b > a
		$max1 = $c;
$max2 = $b;

     $max3= $a;
	}

}

echo "입력된 수 : $a $b $c<br>";
echo "큰 순서 : $max1 $max2 $max3";
?>
<?php
//세 개의 숫자 비교하기
$a = 2;
$b=22;
$c = 3;

if($a>$b){
	if($a>$c){
		$max1 = $a;
      if($b>$c){
       $max2 = $b;
       $max3 = $c;
       }
     else{ //$b<$c
       $max2 = $c;
       $max3 = $b;
     }
	}
	else //$a<$c
	{
       $max1 = $c;
        $max2 = $a;
       $max3 = $b;
  
	}
}
else{ //$b > $a
if($b > $c){
		$max1 = $b;

  if($a >$c){
       $max2 = $a;
       $max3 = $c;

  }
  else{
       $max2 = $c;
       $max3 = $a;

  }
}
else{ //$c >$b
       $max1 = $c;
        $max2 = $b;
       $max3 = $a;
}
}

echo "$a $b $c <br>";
echo "$max1 $max2 $max3";
?>

 

만 나이 계산기

올해 생일이 지났다면 현재 연도에서 태어난 연도를 뺀 나이를 만 나이로 계산

현재 월, 일 지나면 (지금 년수) - (태어난 년수)  이고,

아직 안 지났으면 (지금 년수) - (태어난 년수) - 1

월으로 if, else if else문 먼저 나누기 -> 월이 같은 경우 일로 if - else 문 나누기!!

<?php
$n_y = 2023;
$n_m = 10;
$n_d = 16;

$b_y = 2002;
$b_m=11;
$b_d=22;

if($b_m <$n_m){ //태어난 월 < 지금 월 비교
   $age = $n_y-$b_y;

}
else if( $b_m  == $n_m){ //월이 똑같으면 일까지 비교
	if($b_d <= $n_d){ //태어난 일과 지금 일 비교
	$age = $n_y-$b_y;
	}
	else{ //안 지났으니 -1 더
		$age = $n_y-$b_y-1;
	
	}
}
else{ //안 지났으니 -1 더 
		$age = $n_y-$b_y-1;

}

echo "만 나이 : $age";
?>

 

switch 문

학년에 따라 급식비 계산

<?php
$grade = 5;
switch ($grade){
 case 1:
   echo "$grade 학년 급식비 : 1만원";
   break;
 case 2:
 echo "$grade 학년 급식비 : 2만원";
   break;
 case 3:
 echo "$grade 학년 급식비 : 3만원";
   break;
 case 4:
 echo "$grade 학년 급식비 : 4만원";
   break;
 case 5:
 echo "$grade 학년 급식비 : 5만원";
   break;
 case 6:
 echo "$grade 학년 급식비 : 6만원";
   break;
 default:
   echo "학년 잘못 입력됨";
   break;
}
?>

 

switch문 대신 if문 사용하기

<?php
$grade = 5;
if($grade == 1)
   echo "$grade 학년 급식비 : 1만원";
 else if($grade == 2)
 echo "$grade 학년 급식비 : 2만원";
 else if($grade ==3)
 echo "$grade 학년 급식비 : 3만원";
 else if($grade ==4)
 	 echo "$grade 학년 급식비 : 4만원";
 else if($grade == 5)
 echo "$grade 학년 급식비 : 5만원";
 else if($grade == 6)
 echo "$grade 학년 급식비 : 6만원";
else
   echo "학년 잘못 입력됨";


?>

 

연습 문제

출력 포맷 보고 <br> 태그 꼭 넣어주기 !!!!!

01.

<?php
echo "시간당 급여<br>";
echo "- 주간 근무 : 9,500원<br>";
echo "- 야간 근무 : 주간 시급 * 1.5<br><br>";

$day_night ="주간";
$work_time = 8;

if($day_night == "주간"){
	$pay = $work_time * 9500;
}
else{
	$pay = $work_time * 9500 * 1.5;
}

echo "$work_time 시간 동안 일한 $day_night 급여는 $pay 원입니다.";

?>
<?php
$month = 3;
if($month>=3 && $month <=5){
	$season = "봄";
	echo "{$month}월은 {$season}입니다.";
}
else if($month>=6 && $month <=9){
	$season = "여름";
	echo "{$month}월은 {$season}입니다.";
}
else{
	echo "잘못 입력했다.";
}
?>

04. 내 풀이는 할인율을 백분율로 고친 뒤에

<?php
$buy = 80000;

echo "원래 금액: $buy <br>";
if($buy > 10000 && $buy <50000)
	$per = 0.05;

else if($buy >=50000 && $buy <300000)
$per = 0.075;
else
$per = 0.1;

$buy -= $buy*$per;

echo "할인된 금액: $buy";

?>

교재 코드는 그냥 할인율 바로 쓴 뒤 나중에 계산

<?php
$buy = 80000; //물건 구매액

echo "원래 금액: $buy <br>";
if($buy > 10000 && $buy <50000)
	$rate = 5; //할인율
else if($buy >=50000 && $buy <300000)
$rate = 7.5;
else if($buy >=300000)
$rate = 10;
else
$rate =0;

$discount  = $buy * ($rate/100); //할인 금액
$pay = $buy- $discount; //지불액

echo "지불할 금액: $pay";

?>

<?php
$price = 10000;
$service = "매우 만족";

if($service == "매우 만족"){
	$tip = $price * 0.2;
}
else if($service == "만족"){
	$tip = $price * 0.1;
}
else if($service == "불만족"){
	$tip = $price * 0.05;
}
echo "나의 서비스 만족도는 $service 이고, 팁은 $tip 준다."
?>