2016-09-20 12 views
-2

나는 MyClass#foo(array $array, $argX, $argY, $argZ) 메서드를 가지고 있으며 $myArray의 모든 요소에이 메서드를 적용하고 싶습니다.PHP에서 배열의 모든 요소에 여러 인수가있는 함수를 적용하는 방법은 무엇입니까?

저는 이것을 array_map(...)array_walk(...)으로 시도했지만 사용자 정의 서명이있는 함수에 충분히 융통성이 없습니다.

루프에서 반복하지 않고 PHP에서 배열의 모든 요소에 여러 개의 인수가있는 메서드를 적용하는 방법은 무엇입니까?

답변

0

PHP 5.3 이상을 실행하는 경우 콜백 매개 변수로 익명 함수 (또는 클로저)를 array_map에 전달할 수 있습니다. 당신은 익명 함수 내에서 다른 변수를 사용하려면

$newArray = array_map(function($val){ 
    // Whatever code you want using `$val`. 
    // Make sure to `return` a value, though. 
}, $myArray); 

는, 당신은 그들을 캡처하는 use 키워드를 사용할 수 있습니다.

$newArray = array_map(function($val) use($argX, $argY, $argZ){ 
    // Whatever code you want using `$val`, 
    // and also `$argX`, `$argY`, `$argZ`. 
    // Make sure to `return` a value, though. 
}, $myArray); 

문서 :