문제

이봐, 나는 여러 인수를 취하고 형식을 취하는 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 인터페이스 사용을 반복 할 때. 뿐만 아니라 매개 변수를 생성하는 발전기로 사용할 수 있습니다.

선적 서류 비치

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top