언급 한 바와 같이 , PHP 5.6+부터는 ...
토큰 ( 가변 함수 기능의 일부인 "스 플랫 연산자" )을 사용하여 인수 배열로 함수를 쉽게 호출 할 수 있습니다.
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
참고 : 배열 항목은 키가 아닌 배열 의 위치 에 따라 인수에 매핑됩니다 .
당으로 CarlosCarucce의 코멘트 , 인수 풀기의 형태는 지금까지 가장 빠른 방법입니다 모든 경우에는. 일부 비교에서는 call_user_func_array
. 보다 5 배 이상 빠릅니다 .
곁에
이것이 실제로 유용하다고 생각하기 때문에 (질문과 직접 관련이 없지만) : splat 연산자 매개 변수를 입력 할 수 있습니다 전달 된 모든 값이 특정 유형과 일치하도록 함수 정의에 를 .
(그냥 이렇게하는 것이 기억 해야 될 마지막으로 사용자가 정의하는 매개 변수 그리고 그것은 배열 함수에 전달 된 모든 매개 변수를 번들 있음.)
배열에 특정 유형의 항목이 포함되어 있는지 확인하는 데 좋습니다.
<?php
// Define the function...
function variadic($var, SomeClass ...$items)
{
// $items will be an array of objects of type `SomeClass`
}
// Then you can call...
variadic('Hello', new SomeClass, new SomeClass);
// or even splat both ways
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);