33

Python は、次のように、タプルのリストをアンパックして引数として関数に渡すための "*" 演算子を提供します。

args = [3, 6]
range(*args)            # call with arguments unpacked from a list

これは次と同等です。

range(3, 6)

PHPでこれを達成する方法があるかどうかは誰にも分かりますか? 「PHP Unpack」のバリエーションをグーグルで検索しても、すぐには何も見つかりませんでした..おそらく、PHPでは何か違うものと呼ばれていますか?

4

5 に答える 5

36

( splat 演算子)php5.6 による引数のアンパック...が追加されました。call_user_func_array()それを使用すると、このより単純な代替手段を取り除くことができます。たとえば、次の関数があります。

function add($a, $b){
  return $a + $b;
}

配列を使用します$list = [4, 6];(php5.5 以降では、この方法で配列を宣言できます)。

次の方法で関数を呼び出すことができます...

echo add(...$list);
于 2014-04-19T00:14:26.537 に答える
22

call_user_func_array()それを達成するために使用できます:

call_user_func_array("range", $args);あなたの例を使用します。

于 2008-11-16T20:08:30.617 に答える
6

特定のシナリオでは、php で可能な を使用することを考えるかもしれませんがunpacking、Python と同様の方法です。

list($min, $max) = [3, 6];
range($min, $max);

これが、少なくともこの答えにたどり着いた方法です。Google検索:PHP argument unpacking

于 2015-09-04T15:22:57.007 に答える
4

call_user_func_array を使用する必要があります

call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))

http://www.php.net/call_user_func_array

またはリフレクション API http://www.php.net/oop5.reflectionを使用します。

于 2008-11-16T20:15:01.010 に答える