본문 바로가기

스터디/코딩

[ 자율 스터디 ] PHP 함수

함수란?

- 함수는 함수 정의와 함수 호출로 이루어진다.

- 함수 정의는 그 함수가 어떤 기능을 수행하는지 정의하는 것

- 함수 호출은 정의된 함수를 호출하여 함수 정의에서 기술한 문장을 수행하는 것

 

function 함수명()
{
	문장1;
    문장2;
    …
}
<?php
	echo "함수 실습_1 <br><br>";
    function hello() 
    {
		echo ("안녕하세요!");
    }

    hello();
?>

 

 

함수의 종류

- 함수 정의 부분이 시스템에 내장되어 있는 것을 내장 함수라 하고, 사용자가 직접 정의해서 사용하는 것을 사용자 함수라 한다.

- 사용자 함수는 우리가 프로그래밍 할 때 어떠한 목적을 가지고 새롭게 만드는 함수를 생각하면 좋다.

- 내장 함수는 따로 정의할 필요 없이 호출해서 사용하면 된다.

 

[ 수학 관련 내장 함수 ]

함수 기능 함수 기능
abs() 절대값 round() 반올림 값
sin() 삼각형의 사인 값 log() 로그 값
cos() 삼각형의 코사인 값 max() 최댓값
tan() 삼각형의 탄젠트 값 sqrt() 제곱근
data() 현재 날짜 rand() 임의의 난수 생성
ceil() 소수점 아래에서 올린 정수 값 pi() 파이의 근사값
floor() 소수점 아래에서 내린 정수 값    

 

[ 문자열 관련 내장 함수 ]

함수 기능
echo() 문자열 출력
explode() 특정 문자를 기준으로 문자열 나누기
str_len() 문자열의 길이
substr() 문자열에서 일부 문자 추출
nl2br() 행바꿈(\n)을 <br> xormfh qkRnrl
sprintf() 문자열을 특정 양식에 맞추기

- substr(문자열, 인덱스, 개수)

- explode(구분_기호, 문자열)

 

[ 파일 관련 내장 함수 ]

함수 기능
copy() 파일 복사
mkdir() 디렉토리 생성
chdir() 디렉토리 변경
fopen() 파일 열기
fread() 파일 읽기
fwrite() 파일 쓰기

 

<?php
	echo "함수 실습_2 <br><br>";
	$tel = "010-2777-3333";
	echo "\$tel : $tel<br>";

	$num_tel = strlen($tel);
	echo "\$tel의 길이 : $num_tel<br>";
	
	$tel1 = substr($tel, 0, 3);
	echo "$tel1<br>";

	$tel2 = substr($tel, 4, 4);
	echo "$tel2<br>";

	$tel3 = substr($tel, 9, 4);
	echo "$tel3<br>";

    $phone = explode("-", $tel);
	echo "전화번호 : $phone[0] $phone[1] $phone[2]<br>";
?>

문자열 관련 내장 함수 사용 프로그램

 

 

함수의 매개변수

- 함수를 호출하는 데 사용된 입력값1, 입력값2, …는 각각 매개변수명1, 매개변수명2, …에 복사된다. 이러한 매개변수는 함수 정의의 문장1, 문장2, …에서 사용된다.

 

function 함수명(매개변수명1, 매개변수명2, …)
{
	문장1;
    문장2;
    …
}
…
함수명(입력값1, 입력값2, …)
…

 

<?php
	echo "함수 실습_3 <br><br>";
    function plus($a, $b)
    {
        $c = $a + $b;
        echo $c;
    }

    plus(10, 20);
    echo "<br>";
    plus(300, 500);
?>

매개변수를 이용해 두 수의 합 구하기

 

 

함수의 반환 값

- 함수를 호출하면 미리 정의한 함수가 실행되는데, 이때 실행된 결과 값을 반환하여 함수를 호출한 부분, 즉 호출 하뭇에서 사용할 수 있다. 이렇게 반환된 값을 반환 값이라고하며 함수에 따라 반환 값이 없는 경우도 있다.

 

<?php
	echo "함수 실습_4 <br><br>";
    function plus($a, $b)
    {
        $c = $a + $b;
        return $c;
    }

    $result1 = plus(10, 20);
    echo $result1."<br>";

    $result2 = plus(300, 500);
    echo $result2."<br>";
?>

반환 값을 이용하여 두 수의 합 구하기

 

<?php
	echo "함수 실습_5 <br><br>";
    function sum($a, $b)
    {
        $sum=0;
        while($a <= $b)
        {
            $sum=$sum+$a;
            $a++;
        }
        return $sum;
    }

    $from = 1;
    $to   = 100;
	
    $total = sum($from, $to); 
    echo("$from 에서 $to 까지의 합 : $total");
?>

반환 값을 이용해 1~100 사이 수의 합 구하기

 

<?php
	echo "함수 실습_6 <br><br>";
	function man_age($year, $month, $day,
                         $b_year, $b_month, $b_day)
 	{
	    if($b_month < $month)
	    {
			$age= $year - $b_year;
	    } 
   	 	else if($b_month == $month)
   	 	{ 
       		if($b_day <= $day) 
       		{
      	   		$age= $year - $b_year;
       		}
       		else 
       		{
      	   		$age= $year - $b_year - 1;
       		}
   	  	} 
   	  	else
	    {
		      $age= $year - $b_year - 1;
	    }
	    return $age;
	}

   	$now_year=2019;
   	$now_month=9;
   	$now_day=10;

   	$birth_year=1999;
   	$birth_month=2;
   	$birth_day=9;

    $your_age = man_age($now_year, $now_month, $now_day,
			    $birth_year, $birth_month,
			    $birth_day);

   	echo "오늘 날짜 : $now_year 년 $now_month 월 $now_day 일<br>";
   	echo "생년월일 : $birth_year 년 $birth_month 월 $birth_day 일생<br>";
   	echo "만 나이 : $your_age 세";
?>

반환값을 사용해 만 나이 계산하기

 

<?php
	echo "함수 실습_7 <br><br>";
   	function cal_fee1($day, $age)
   	{
        if ( $day == "주간" )
      	{
            if ($age> 12 && $age < 65) 
            {
                $money = 26000;
            }
            else 
            {
             	  $money = 19000;
            }
       	}
      	else
        {
         	  if ($age> 12 && $age < 65) 
         	  {
             	  $money = 21000;
         	  }
         	  else 
         	  {
             	  $money = 16000;
         	  }
      	}
      
      	return $money;
   	}

   	function cal_fee2($day, $age)
   	{
      	if ( $day == "주간" )
      	{
           	if ($age> 12 && $age < 65) 
           	{
           	    $money = 33000;
           	}
           	else 
           	{
           	    $money = 24000;
           	}
      	}
      	else
      	{
           	if ($age> 12 && $age < 65) 
           	{
           	    $money = 28000;
           	}

         	else 
         	{
                $money = 21000;
         	}
      	}
      
      	return $money;
   	}

   	function cal_fee3($age)
   	{
       	if ($age> 12 && $age < 65) 
       	{
          	$money = 55000;
       	}
       	else
       	{
          	$money = 40000;
       	}

      	return $money;
   	}

   	function cal_fee4($age)
   	{
   	    if ($age> 12 && $age < 65) 
   	    {
          	$money = 54000;
   	    }
       	else 
       	{
          	$money = 40000;
       	}

      	return $money;
   	}

   	$category = 1;
   	$age = 13;
   	$day = "야간";

   	if( $category == 1 ) 
   	{
       	$fee = cal_fee1($day, $age);
   	}
   	elseif ( $category == 2 ) 
   	{
        $fee = cal_fee2($day, $age);
   	}
   	elseif ( $category == 3 ) 
   	{
       	$fee = cal_fee3($age);
   	}
   	else
   	{
       	$fee = cal_fee4($age);
   	}
      
   	if( $category == 1 )
   	{
       	$cat = "일반 입장권";
   	}
   	elseif ( $category == 2 )
   	{
   	    $cat = "자유이용권";
   	}
   	elseif ( $category == 3 )
   	{
   	    $cat = "2일 자유이용권";
   	}
    else
    {
   	    $cat = "콤비권";
    }
   	echo "- 구분 : $cat<br>";

    if ($category == 1 || $category==2)
    {
        echo "- 주야간 : $day<br>";
    }  	
    echo "- 나이 : $age 세<br>";
   	echo "- 입장료 : $fee 원";
?>

함수를 이용하여 입장료 계산

 

 

[ 연습 문제 ]

 

- 1번

<?php
	echo "연습 문제 1번 <br><br>";
	function computeMaxGong($x, $y)
	{ 
		if ($x > $y)
		{
			$small = $y;
		}
		else
		{
			$small = $x;
		}
		for ($i=1; $i<=$small; $i++)
		{
			if($x%$i == 0 and $y%$i == 0)
			{
				$result = $i;
			}
		}
		return $result;
	}

	$num1 = 9;
	$num2 = 33;
	$max_gong = computeMaxGong($num1, $num2);

	echo "{$num1}와 {$num2}의 최대공약수 : $max_gong";
?>

함수를 사용해 최대 공약수를 구하는 프로그램

 

- 2번

<?php
	echo "연습 문제 2번 <br><br>";
	function maxTwo($i, $j)
	{ 
		if($i > $j)
		{
			return $i;
		} 
		else 
		{ 
			return $j;
		}
	}

	function maxThree($x, $y, $z)
	{ 
		return maxTwo(maxTwo($x, $y), maxTwo($y, $z));
	}

	$a = 10;
	$b = 5;
	$c = 7;
	$max_num = maxThree($a, $b, $c);
	echo "$a, $b, $c 중 가장 큰 수 : $max_num";
?>

함수를 사용해 세 수 중 제일 큰 수를 찾는 프로그램

 

- 3번

<?php
	echo "연습 문제 3번 <br><br>";
	function child_rate($cat)
	{ 
		if ($cat == "입장권") 
		{
			$price = 13000;
		}
		elseif ($cat == "자유 이용권 주간") 
		{
			$price = 25000;
		}
		elseif ($cat == "자유 이용권 야간") 
		{
			$price = 22000;
		}
		else 
		{
			$price = 22000;
		}

		return $price;
	}
	function youth_rate($cat)
	{
		if ($cat == "입장권")
		 $price = 15000;
		elseif ($cat == "자유 이용권 주간")
		 $price = 28000;
		elseif ($cat == "자유 이용권 야간")
		 $price = 25000;
		else
		 $price = 25000;

		return $price;
	}
	function adult_rate($cat)
	{
		if ($cat == "입장권")
		{
			$price = 18000;
		}
		elseif ($cat == "자유 이용권 주간")
		{
			$price = 32000;
		} 
			
		elseif ($cat == "자유 이용권 야간") 
		{
			$price = 29000;
		}
		else 
		{
			$price = 29000;
		}
		return $price;
	}

	$age = 2;
	$category = "자유 이용권 야간";

	if($age >= 0 && $age <= 3) 
	{
	 	$fee = 0;
	}
	elseif($age >= 4 && $age <= 10) 
	{
	 	$fee = child_rate($category);
	}
	elseif($age >= 11 && $age <= 17)
	{
	 	$fee = youth_rate($category);
	}
	else 
	{
		 $fee = adult_rate($category);
	}

	echo "입장권 종류 : $category<br>";
	echo "입장객 나이 : $age<br>";
	echo "입장료 : {$fee}원";
?>

함수를 사용해 놀이공원 입장료 요금 계산 프로그램

'스터디 > 코딩' 카테고리의 다른 글

[ 자율 스터디 ] 쿠키와 세션  (5) 2023.01.05
[ 자율 스터디 ] 폼과 PHP  (0) 2023.01.05
[ 자율 스터디 ] PHP 배열  (0) 2023.01.04
[ 자율 스터디 ] PHP 반복문  (0) 2023.01.03
[ 자율 스터디 ] PHP 조건문  (0) 2023.01.03