Forum und email

함수 인자

함수 인자를 통해서 함수에 정보를 넘겨줄수 있다. 이런 함수 인자는 콤마(,)로 구별되는 변수나 상수의 목록이다.

PHP는 값에 의한 인자 전달(passing by value) (기본값), 참조에 의한 전달(passing by reference), 기본 인자 값(default argument value)기능 을 지원한다. 가변 인자 목록(variable-length argument)은 PHP 4이후 버전에서만 지원된다; 더 자세한 정보는 가변 인자 목록섹션과 func_num_args(), func_get_arg(), func_get_args()함수 레퍼런스를 참고. PHP 3에서는 함수에 인자 배열을 넘겨줌으로써 비슷한 효과를 낼수있다:

Example#1 함수에 배열 넘겨주기

<?php
function takes_array($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

참조에 의한 인자 전달하기

기본적으로, 함수 인자는 값에 의해 전달된다 (그래서 함수내의 인자값 이 변경되도 함수 밖에서는 바뀌지 않는다). 함수가 그 인자까지 변경가능하게 하려면, 참조에 의해 인자를 전달해야 한다.

함수의 인자를 참조로 전달하려면, 함수 선언시에 엠퍼센트(&)를 인자명 앞에 덧붙이면 된다:

Example#2 참조에 의해 함수 인자 전달하기

<?php
function add_some_extra(&$string)
{
    
$string .= 'and something extra.';
}
$str 'This is a string, ';
add_some_extra($str);
echo 
$str;    // outputs 'This is a string, and something extra.'
?>

기본 인수 값

함수는 다음과 같이 스칼라 인자에 대해 C++스타일 기본값으로 지정할수있다:

Example#3 함수에 기본 인자 사용하기

<?php
function makecoffee($type "cappuccino")
{
    return 
"Making a cup of $type.\n";
}
echo 
makecoffee();
echo 
makecoffee("espresso");
?>

위 예제 코드의 출력은 다음과 같다:

Making a cup of cappuccino.
Making a cup of espresso.
     

또한, PHP는 배열과 특별한 값인 NULL을 기본값으로 사용할 수 있습니다. 예를 들면:

Example#4 스칼라 형이 아닌 기본값 사용하기

<?php
function makecoffee($types = array("카푸치노"), $coffeeMaker NULL)
{
    
$device is_null($coffeeMaker) ? "손" $coffeeMaker;
    return 
"$device(으)로 ".join(", "$types)."를 만듭니다.\n";
}
echo 
makecoffee();
echo 
makecoffee(array("카푸치노""라바짜"), "찻주전자");
?>

기본값은 상수 표현식이 될수 있으나 (예를 들면) 변수나 클래스 멤버가 될수는 없다.

기본 인자를 사용할때에는 모든 기본값은 기본값을 쓰지 않는 인자의 오른쪽으로 가야 한다; 그렇지 않으면, 기대하던대로 작동하지 않을것이다. 다음 예제 코드를 참고:

Example#5 기본 함수 인자가 잘못 사용된 예

<?php
function makeyogurt($type "acidophilus"$flavour)
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt("raspberry");   // won't work as expected
?>

위 예제 코드의 출력은 다음과 같다:

Warning: Missing argument 2 in call to makeyogurt() in 
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Making a bowl of raspberry .
     

위 코드를 아래 코드와 비교하라:

Example#6 기본 함수 인자의 정확한 사용예

<?php
function makeyogurt($flavour$type "acidophilus")
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt("raspberry");   // works as expected
?>

이 예제코드의 출력은 다음과 같다:

Making a bowl of acidophilus raspberry.
     

Note: PHP 5부터, 기본값을 참조로 넘길 수 있습니다.

가변 길이 인자 목록

PHP 4 이상에서는 사용자 선언 함수에서 가변 길이 변수 목록 기능을 지원합니다. 이 기능은 func_num_args(), func_get_arg(), func_get_args()함수를 사용하여 손쉽게 사용가능하다.

특별한 문법이 필요하지 않다. 인자 목록은 함수선언부에서 밝혀야하고 일반 인자와 동일하게 작동할것이다.