PHP는 모든 인수를 배열로 얻습니까?
문제
이봐, 나는 여러 인수를 취하고 형식을 취하는 PHP 기능으로 작업하고있었습니다. 현재 저는 다음과 같은 작업을하고 있습니다.
function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
if ($a1 !== null) doSomethingWith($a1, 1);
if ($a2 !== null) doSomethingWith($a2, 2);
if ($a3 !== null) doSomethingWith($a3, 3);
if ($a4 !== null) doSomethingWith($a4, 4);
}
하지만 다음과 같은 솔루션을 사용할 수 있는지 궁금합니다.
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
그러나 C#의 Params 키워드 또는 JavaScript의 인수 배열과 비슷한 방식으로 기능을 동일한 방식으로 호출합니다.
해결책
func_get_args
현재 함수의 모든 인수가있는 배열을 반환합니다.
다른 팁
PHP 5.6+를 사용하는 경우 이제 다음을 수행 할 수 있습니다.
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
원천: http://php.net/manual/functions.arguments.php#functions.variable-arg-list
또는 PHP 7.1 이제 유형 힌트를 사용할 수 있습니다. iterable
function f(iterable $args) {
foreach ($args as $arg) {
// awesome stuff
}
}
또한 대신 사용할 수 있습니다 Traversable
인터페이스 사용을 반복 할 때. 뿐만 아니라 매개 변수를 생성하는 발전기로 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow