>백엔드 개발 >PHP 튜토리얼 >PHP 변수 매개변수 구현

PHP 변수 매개변수 구현

PHP中文网
PHP中文网원래의
2017-03-22 16:17:141957검색

편집자 주: 처음에 생각한 방법은 C 언어에서 배열을 사용하거나 매크로를 사용하는 것이었습니다. 그런데 인터넷에서 PHP의 구현 방법이 다르다는 것을 발견하여 여기에 기사를 다시 인쇄했습니다

우선, 두 숫자의 합을 계산하는 PHP 함수를 작성해야 하며, 다음과 같이 작성할 수 있습니다.

/**
 *计算两个数的和,并返回计算的结果
 * @param number $a
 * @param number $b
 * @return number
 */
function sum($a, $b){
    return $a + $b;
}

마찬가지로, 세 숫자의 합을 계산해야 한다면, 다음과 같이 작성할 수 있습니다.

/**
 *计算两个或三个数的和,并返回计算的结果
 * @param number $a
 * @param number $b
 * @return number $c 该参数可以不传入值,默认为0
 */
function sum($a, $b, $c =0){
    return $a + $b + $c;
}

이 시점에서 어떤 숫자의 합을 계산해야 한다면 PHP 함수를 어떻게 작성해야 할까요?

물론, 이러한 기능을 달성하기 위해 함수의 전달된 매개변수로 배열을 사용하는 것을 고려할 수도 있습니다.

/**
 *计算任意多个数的和,函数参数params必须为array类型
 * @param array params
 */
function sum($params){
    $total =0;
    foreach($params as $i){
        $total += $i;
    }
    return $total;
}

글쎄, 이 접근 방식에는 실제로 아무런 문제가 없습니다. 가변 매개변수가 탄생하기 전의 프로그램 개발 과정에서, 전달해야 할 매개변수의 수에 관계없이 이를 표현하기 위해 배열이나 기타 유사한 컬렉션이 사용되었습니다. 하지만 이런 전달 방식은 충분히 명확하고 직관적이지 않나요? PHP 프로그래머라면 PHP에 변수에 대한 자세한 정보를 표시하는 var_dump() 함수가 있다는 것을 알아야 합니다. 예를 들면 다음과 같습니다.

$age =18;
var_dump($age);//显示变量$age的详细信息

여러 변수에 대한 정보를 표시해야 하는 경우 다음을 수행할 수도 있습니다. 다음과 같이 사용하세요:

$name ='张三';
$age =18;
$gender =true;
var_dump($name, $age, $gender);

우리는 var_dump()가 동시에 여러 개의 변수를 받을 수 있고 배열 형식으로 전달할 필요가 없다는 것을 알고 있습니다. 더 직관적이고 우아합니다. 이러한 방식으로 매개변수를 여러 개 전달하는 방식을 가변 매개변수라고 합니다. 물론 sum() 함수는 다음과 같은 방식으로 구현할 수도 있습니다.

/**
 *计算任意多个数的和,并返回计算后的结果
 */
function sum(){  //这里的括号中没有定义任何参数
    $total =0;
    //使用func_get_args()来获取当前函数的所有实际传递参数,返回值为array类型
    $varArray = func_get_args();
    foreach($varArray as $var){
        $total += $var;
    }
    return $total;
}

/*****다음은 호출 예시입니다*****/

echo sum(1,3,5);  //计算1+3+5
echo sum(1,2);//计算1+2
echo sum(1,2,3,4);   //计算1+2+3+4

위의 예에서 볼 수 있듯이 현재 함수에서 PHP 내장 함수 func_get_args()를 사용하면 함수 호출 시 전달된 실제 매개변수 배열을 얻을 수 있으며 그런 다음 매개변수 배열만 처리하면 됩니다.

참고 1: 1. 호출 시 매개변수가 전달되지 않으면 func_get_args() 함수는 여전히 배열 유형을 반환하지만 빈 배열(배열에는 요소가 포함되지 않음)이 반환됩니다. 2.func_get_args()는 함수 내에서만 호출할 수 있습니다. 그렇지 않으면 경고 메시지가 표시됩니다. 3. func_get_args() 함수는 인덱스 매개변수를 수신하여 매개변수 배열의 지정된 인덱스에 있는 매개변수를 얻을 수 있습니다. 예를 들어, 첫 번째 인수를 전달하려면 func_get_args(1)를 호출하면 됩니다. 4. 또한 함수에서 func_num_args()를 호출할 수도 있으며, 이는 현재 함수 호출에 전달된 매개변수 수를 반환할 수 있습니다.

참고 2: PHP의 변수 매개변수 구현은 JavaScript의 변수 매개변수 구현과 매우 유사합니다. PHP는 이를 구현하기 위해 내장 함수 func_get_args()를 사용하고 JavaScript는 내장 함수를 사용합니다. 이를 구현하기 위한 가변 인수.

주의 3: 최종 sum() 함수 코드에서 sum() 함수는 형식적인 매개 변수를 정의하지 않으므로 이 함수 호출 시 0, 1, 2~n 매개 변수를 전달할 수 있습니다. 그러나 일반적으로 합계를 계산하려면 최소한 두 개의 숫자가 필요합니다. 따라서 sum() 함수 정의에서 두 가지 형식 매개변수(예: sum($a, $b))를 정의할 수 있으며 다른 코드는 변경되지 않습니다. 이런 방식으로 이 함수를 호출할 때 최소한 두 개의 매개변수를 전달해야 합니다.

참고 4: PHP에는 배열의 모든 요소의 합을 계산하는 내장 함수 array_sum()이 있으므로 위 코드의 최종 버전은 다음과 같습니다.

/**
 *计算任意多个数的和,并返回计算后的结果
 */
function sum($a, $b){
    return array_sum(func_get_args());
}

위 내용은 내용의 측면을 포함하여 PHP에서 변수 매개변수 구현을 수행하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 기사:

php 배열의 각 요소를 가변 매개변수 함수의 실제 매개변수로 전달하는 방법은 무엇입니까?

php 변수 매개변수

변수 매개변수를 함수에 전달하는 JS와 PHP의 차이점 예시 코드

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.