0

重複の可能性:
PHP オプションのパラメーター - 名前でパラメーター値を指定しますか?

私にとってのパラメーターのリストを含む連想配列があります。次に例を示します。

array(
    'param1' => 'value1',
    'param4' => 'value4',
    'param3' => 'value3',
    'param2' => 'value2',
);

ソートされていない場合があることに注意してください。さて、(静的またはインスタンスから、call_user_func_arrayまたは同様の方法で) 呼び出しを行い、各値を各パラメーターに正しく渡す方法はありますか? 確かに、そのパラメーター配列を使用して呼び出したい関数の例は、次のようなものです。

exampleFunction($param1, $param2, $param3, $param4) {
    ...
}

PS: リフレクションは素晴らしいですが、実行時間が気になります (少なくとも Java では、リフレクションを使用すると大幅に増加する傾向があります)。他の方法を知っていれば、それは素晴らしいことです。

4

2 に答える 2

1

To avoid this problem you should pass an array as parameter, like the following.
This way you'll not be stacked in a specific order and you can set defaults for the parameters that are not in the array.

$data = array(
    'param1' => 'value1',
    'param4' => 'value4',
    'param3' => 'value3',
    'param2' => 'value2',
);

exampleFunction($data);

function exampleFunction($params= array()) {
    $defaults = array(
        'param1' => '1',
        'param4' => '2',
        'param3' => '3',
        'param2' => '4',
    );

    $params += $defaults;
}

You can access an array element by the following.

$data['param1'], $data['param2'], $data['param3'], ...
于 2012-12-12T16:51:26.267 に答える
0

パラメータの値を使用して関数を呼び出そうとしているだけなら、これがやりたいことだと思います。

exampleFunction($params['param1'], $params['param2'], $params['param3'], $params['param4']);

PHP の配列はマップとしても機能するため、そのまま使用できます。

于 2012-12-12T16:51:42.160 に答える