함수란?
- 함수는 함수 정의와 함수 호출로 이루어진다.
- 함수 정의는 그 함수가 어떤 기능을 수행하는지 정의하는 것
- 함수 호출은 정의된 함수를 호출하여 함수 정의에서 기술한 문장을 수행하는 것
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");
?>

<?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 |