함수(2)

minah moon·2023년 8월 3일

PHP

목록 보기
8/58
post-thumbnail

매개변수

매개변수는 함수가 작업을 수행하는 데 필요한 값을 나타내는 변수명과 같다. 매개변수가 나타내는 값은 그 함수가 호출될 때마다 바뀔 수 있다.

 function calculate_cost($price, $quantity)
 {
 	return $price * $quantity;
 }

이 함수에서 $price와 $quantity는 매개변수이다. 매개변수는 변수처럼 동작하지만, 함수의 중괄호 안의 구문에서만 사용할 수 있다. 함수 정의 밖에 있는 코드는 이 매개변수에 접근할 수 없다.

PHP 인터프리터는 닫는 중괄호에 도달하면 함수에 저장된 모든 값을 잊는다. 이것은 페이지가 함수를 호출할 때마다 다른 값을 사용하여 호출할 수 있기 때문에 중요하다.


인수

매개변수가 있는 함수를 호출할 때, 각 매개변숫값은 함수명 다음에 있는 괄호 안에 지정된다. 함수를 호출할 때 사용되는 값을 인수라고 한다.

  • 값으로서의 인수
$total = calculate_cost(3, 5)
  • 변수로서의 인수
$cost  = 4;
$units = 6;
$total = calculate_cost($cost, $units)

변수명을 인수로 사용할 경우, 변수명이 매개변수 이름과 일치할 필요는 없다.


매개변수 vs. 인수

매개변수와 인수는 혼용되어 사용되지만, 둘간에 차이가 있다. 위의 예시처럼 $price와 $quantity라는 단어들은 함수의 중괄호 안에서 변수처럼 동작했다. 이것이 매개변수(parameter)이다.

또한 함수를 호출할 때, 코드는 계산을 수행하는 데 사용할 값이나 숫자를 담고 있는 변수를 지정하고 있다. 코드로 전달되는 이 값을 인수(argument)라고 한다.


전역 변수와 정적 변수

특별한 경우, 함수 내의 코드가 전역 변수에 접근하거나 업데이트할 수 있도록 하여 그 함수 실행이 끝난 후에 함수 내의 변수에 저장되었던 값을 기억하도록 할 수 있다.

global 키워드를 이용하면 함수 내의 코드가 이 변숫값에 접근하거나 업데이트할 수 있게 한다.

 global $cost;

함수의 실행이 완료되면 일반적으로 함수 내에서 생성된 모든 로컬 변수는 삭제된다. PHP 인터프리터는 함수 내에서 생성된 변수가 정적 변수로 생성되었다면 그 변수에 저장된 값을 기억하라고 지시할 수 있다.

static $quantity = 10;

함수의 실행이 끝나도 이 변수와 변수에 저장된 값은 삭제되지 않을 것이다. 그러나 함수 내부에서 생성했기 때문에 함수 내부의 코드에서만 사용할 수 있다.


예시

<?php
$tax_rate = 0.2;
function calculate_running_total($price, $quantity)
{
  global $tax_rate;
  static $running_total = 0;
  $total = $price * $quantity;
  $tax = $total * $tax_rate;
  $running_total = $running_total + $total + $tax;
  return $running_total;
}
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Functions with Parameters</title>
    <link rel="stylesheet" href="css/styles.css">
  </head>
  <body>
    <h1>The Candy Store</h1>
    <table>
      <tr>
        <th>Item</th>
        <th>Price</th>
        <th>Qty</th>
        <th>Running total</th>
      </tr>
      <tr>
        <td>Mints:</td>
        <td>$2</td>
        <td>5</td>
        <td>$<?= calculate_running_total(2, 5); ?></td>
      </tr>
      <tr>
        <td>Toffee:</td>
        <td>$3</td>
        <td>5</td>
        <td>$<?= calculate_running_total(3, 5); ?></td>
      </tr>
      <tr>
        <td>Fudge:</td>
        <td>$5</td>
        <td>4</td>
        <td>$<?= calculate_running_total(5, 4); ?></td>
      </tr>
    </table>
  </body>
</html>

결과






출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글