편집자 주: 처음에 생각한 방법은 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
관련 기사: