2009-09-23 2 views
6

함수 호출에서 독립 변수로 배열의 값을 사용하려고합니다. 예 :배열을 독립적 인 함수 인자 - howto로 바꾼다.

// Values "a" and "b" 
$arr = array("alpha", "beta"); 
// ... are to be inserted as $a and $b. 
my_func($a, $b) 
function my_func($a,$b=NULL) { echo "{$a} - {$b}"; } 

배열의 값 개수를 알 수 없습니다.

가능한 해결책 :

  1. 내가 하나의 인수로 배열을 전달할 수 있습니다 -하지만 여러 개의 독립적 인 함수 인수를 전달하는 것을 선호합니다.

  2. implode() 쉼표로 구분 된 문자열로 배열. (그것은 단지 하나의 문자열이기 때문에 실패합니다.)

  3. 은 단일 매개 변수 사용 :

    $str = "'a','b'"; 
    function goat($str); // $str needs to be parsed as two independent values/variables. 
    
  4. 사용 eval()를?

  5. 배열을 탐색 하시겠습니까?

제안 사항에 감사드립니다. 감사. 내가 제대로 이해하면

+0

은 - 적어도 함수 서명의 arg 목록과 일치하는 것으로 알려져 있습니까? – grantwparks

답변

1

시도 목록()

// Values "a" and "b" 
$arr = array("alpha", "beta"); 
list($a, $b) = $arr; 
my_func($a, $b); 

function my_func($a,$b=NULL) { echo "{$a} - {$b}"; } 
+0

* 기술적으로 * 정확하지 않습니다. (call_user_func_array는 이러한 유형의 동작을 수행하는 방법이지만 매우 똑똑합니다. +1 – cwallenpoole

+0

좋습니다. 다음 코드를 깨끗하게 유지하는 표준 함수 호출 (call_user_func_array없이)을 사용할 수 있습니다. 유일한 함정은 배열 값을 미리 지정하지 않은 상태에서 목록에 ... list ($ a, $ b) ... 인수를 하드 코딩해야한다는 것입니다. –

+0

'list()에 대해 생각하고있었습니다. '이 질문을 보았을 때 무한한 양의 매개 변수를 허용하지 않습니다. 그렇습니까? –

17

:

$arr = array("alpha", "beta"); 
call_user_func_array('my_func', $arr); 
+0

감사합니다. –

0

당신은 call_user_func_array()를 사용하는 것을 할 수 있습니다. 그것은 경이 (PHP 5.3 이후의 람다 함수조차도)를 작동시킨다.

관련 문제