본문 바로가기

PHP/PHP Programming

[PHP] 함수의 이해

반응형

01. 함수의 이해


 함수(function)는 반복해서 사용하는 기능을 하나의 모듈처럼 만든 것으로 여러 행의 코드로 구성될 수도 있고 한 행일 수도 있다. 앞에서 배운 echo문도 함수의 일종이며 안에 있는 문자열이나 변수값을 출력하는 기능을 수행한다.




 aaa_func.php

 

 







 함수를 사용하는 목적은 크게 두가지로 요약할 수 있다.


 첫째, 함수는 프로그램을 모듈화시켜 코드가 간결해지고 픅로그램의 흐름을 이해하기 쉽게 해준다. 특히 큰 프로글매에서 함수를 사용하면 여러 모로 유리하다. 예를 들어 여러 살마이 함수를 사용하지 않고 큰 프로그램 하나를 만든다면, 협업 과정에서 여러 문제가 발생할 수 있고 해결하기 복잡할 수 있다. 그러나 함수를 사용하면 전체 프로글매의 복잡한 문제를 잘게 쪼개서 좀 더 빠르게 문제를 해결할 수 있다.


 둘쨰, 함수를 한번 정의해 놓으면 필요할 때 언제든 함수를 호출해 재사용할 수 있어 효율적이다. 예를 들어 평균 구하는 부분을 함수로 만들면 평균을 구하고 싶을 때마다 따로 코딩할 필요 없이 함수를 호출해 사용할 수 있다.








02. 함수의 종류


 PHP에서 사용하는 함수의 종류에는 PHP를 설치하면 컴퓨터 시스템 내부에 정의되는 내장 함수와 프로그래머가 직접 정의하는 외장 함수가 있다.



내장 함수


 내장 함수는 함수의 정의가 컴퓨터 시스템에 이미 존재한다. 예를 들어 sin 30을 구하고 싶다면, 함수를 따로 정의할 필요 없이 내장된 sin( ) 함수를 다음과 같이 사용하면 변수 $a에 sin 30의 값이 입력된다.


$a = sin(30);


 PHP는 지금까지 사용한 echo문을 비롯해 다양한 내장 함수를 지원한다. 자주 사용되는 내장 하수를 간단히 살펴보면 다음과 같다.


수학관련 내장 함수


함수명

기능

  abs( )

 절댓값 계산

  sin( )

 삼각형의 사인값 계산

  cos( )
 삼각형의 코사인값 계산
  tan( )
 삼각형의 탄젠트값 계산
  date( )
 현재 날짜 계산

  ceil( )

 소수점 아래에서 올린 정수값 계산
  floor( )
 소수점 아래에서 내린 정수값 계산
  round( )
 반올림값 계산

  log( )

 로그값 계산

  max( )

 최댓값 계산

  sqrt( )

 제곱근(square root) 계산

  rand( )
 임의의 난수 생성
  pi( )

 π의 근사값(3.141592) 계산



함수명

기능

  echo( )

 문자열 출력

  explode( )

 특정 문자를 기준으로 문자열 분리

  str_len( )
 문자열의 길이 계산
  substr( )
 문자열에서 문자열의 일부 추출
  nl2br( )

 행 바꿈(\n)을 <br/>태그로 변환

  sprintf( )

 문자열을 특정 양식에 맞춤



함수명

기능

  copy( )

 파일 복사

  mkdir( )

 디렉터리 생성

  chdir( )
 디렉터리 변경
  fopen( )
 파일 열기
  fread( )

 파일 읽기

  fwrite( )

 파일 쓰기



함수명

기능

  mysql_connect( )

 데이터베이스 접속

  mysql_create_db( )

 데이터베이스 생성

  mysql_drop_db( )
 데이터베이스 삭제
  mysql_close( )
 데이터베이스 접속 종료



  string_func.php

<?
    $tel = "010-2777-3333";

    $num_tel = strlen($tel);    // 문자열 길이 계산

    echo "strlen( ) 함수 사용 : $num_tel<br/>";

    $tel01 = substr($tel, 0, 3);    // 문자열의 앞에서 세 문자를 가져옴
    $tel02 = substr($tel, 4, 4);    // 문자열의 네 번째부터 문자를 네 개 가져옴
    $tel03 = substr($tel, 9, 4);    // 아홉 번째부터 문자를 네개 가져옴

    echo "substr( ) 함수 사용 : $tel01 $tel02 $tel03<br/>";

    $phone = explode("-", $tel);    // 하이픈(-)을 기준으로 문자열 분리

    echo "explode( ) 함수 사용 : $phone[0] $phone[1] $phone[2]<br/>";
?>

 출력결과

 



 func_plus_2.php

<?
    function plus($a, $b) {
       
        $c = $a + $b;
        return $c;
    }

    echo plus(15, 25);
    echo "<br/>";
    echo plus(3500, 1500);
?>

 출력결과

 



func_plus_2_ret.php

<?
    function plus($a, $b) {
       
        $c = $a + $b;
        return $c;
    }

    $result = plus(15, 25);
    echo $result."<br/>";

    $result = plus(3500, 1500);
    echo $result;
?>

 출력결과

 




 func_bbb.php

<?
    function bbb($a, $b, $c) {
       
        $d = $a + $b - $c;
        return $d;
    }

    $i = 500;
    $j = 200;
    $k = 300;
    $m = bbb($i, $j, $k);
    echo $m;
?>

 출력결과

 




func_hap.php

<?
    // hap($a, $b) 함수는 $a에서 $b 까지의 합을 구한다.
    function hap($a, $b) {
       
        $sum = 0;

        while($a <= $b) {
           
            $sum = $sum + $a;
            $a++;
        }

        return $sum;
    }

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

 출력결과

 




func_man_age.php

<?
    // 오늘 날짜와 생년월일에 따라 만 나이 계산하기
    function man_age($year, $month, $day, $b_year, $b_month, $b_day) {
       
        if($b_month < $month) {
           
            $age = $year - $b_year;
        }

        else if($b_bomth == $month) {
           
            $age = $year - $b_year;

            if($birth_day <= $now_day) {
               
                $age = $year - $b_year;
            }

            else {
               
                $age = $year - $b_year - 1;
            }
        }

        else {
           
            $age = $year - $b_year - 1;
        }

        return $age;
    }

    $now_year = 2015;
    $now_month = 2;
    $now_day = 10;

    $birth_year = 1993;
    $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} 세";
?>

 출력결과

 




func_park_free.php

<?
    function cal_fee01($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_fee02($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_fee03($day, $age) {    // 2일 자유이용권 요금
       
           
        if($age > 12 && $age < 65) {
           
            $money = 55000;
        }

        else {
           
            $money = 40000;
        }

        return $money;
    }

    function cal_fee04($day, $age) {    // 콤비권 요금
       
           
        if($age > 12 && $age < 65) {
           
            $money = 55000;
        }

        else {
           
            $money = 40000;
        }

        return $money;
    }

    // $category가 1일 경우 일반 입장권, 2는 자유이용권, 3은 2일 자유이용권, 4는 콤비권 의미
    $category = 1;    // 나이가 13살인 야간 이용객의 입장료 출력
    $age = 13;
    $day = "야간";

    if($category == 1) {
       
        $ree = cal_fee01($day, $age);
    }

    else if($category == 2) {
       
        $fee = cal_fee02($day, $age);
    }

    else if($category == 3) {
       
        $fee = cal_fee03($age);
    }

    else {
       
        $fee = cal_fee04($age);
    }

    if($category == 1) {
       
        $cat = "일반 입장권";
    }

    else if($category == 2) {
       
        $cat = "자유이용권";
    }

    else if($category == 3) {
       
        $cat = "2일 자유이용권";
    }

    else {
       
        $cat = "콤비권";
    }

    echo "구분 : $cat<br/>";

    if($category == 1 || $category == 2) {
       
        echo "때 : {$day}<br/>";
    }

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

 출력결과

 


반응형

'PHP > PHP Programming' 카테고리의 다른 글

[PHP] MySQL을 지원하는 PHP API 함수  (0) 2014.12.18
[PHP] PHP + MySQL 연결확인  (0) 2014.12.17
[PHP] 2차원 배열  (0) 2014.12.11
[PHP] 버블 정렬을 이용한 배열 원소 정렬  (0) 2014.12.11
[PHP] 1차원 배열  (0) 2014.12.10