2009-09-23 9 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. 私は1つの引数として配列を渡すことができます - しかし、として複数の独立した関数の引数を渡すことを好むだろう。

  2. implode()コンマで区切られた文字列への配列。 (それだけで1つの文字列だから失敗する。)

  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

良い提案。唯一の落とし穴は、リストの引数をハードコードする必要があるということです。リスト($ 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以来のラムダ関数でさえ)を働かせます。

関連する問題