2

大量のパラメータがnullまたはvalueになる可能性がある関数を作成する必要があります。今、私は以下の例のように関数を作成しています:

function container($args){

    $args += array(
            'limit'             =>      10,
            'container'         =>      null,
            'container_class'   =>      null,
            'list_class'        =>      null,
        );

    echo'<'.$args['container'].' class="'.$args['container_class'].'" >';

    echo 'My function will have other content here with the '.$args['limit'];

    echo '<ul class="'.$args['list_class'].'" >';
    echo '<li>list itme here</li>';
    echo '</ul>'

    echo '</'.$container.'>';    

}

配列で4〜5の値を渡す必要がある場合はこれで問題ありませんが、渡すキーが15〜20を超える場合はどうなりますか?達成するための適切な方法が必要です。

では、多くの配列キーをパラメーターとして渡すような効率的な方法で関数を作成するにはどうすればよいでしょうか。

どうもありがとう

4

2 に答える 2

4

15〜20個のキーは実際には大きな配列ではありません。何かをargsに渡す方法を考える必要があるときは、1000以上のキーがあるときです。

とにかく、「参照による受け渡し」の概念を使用できます(http://php.net/manual/en/language.references.pass.phpを参照)。この概念は、ステートメントを返さずに変数を関数に変更する必要がある場合に役立ちます。しかし、この目標を達成するために、PHPは変数のコピーを送信する代わりに、メモリ内の変数を参照するキーを送信するだけです。

そして、このキーは変数のサイズに依存しません。

使い方?関数宣言で&symbolを使用する例:

function container(&$args) 
{
    // your function
}

$args = array(1, 2, 3 ..., 100000);
container($args);

ただし、「参照による受け渡し」の概念を使用する場合は、$argsを変更しないように注意してください。変更しないとメインスクリプトで$argsが変更されます。

最終的な世界:キーの数が50未満の場合、引数の受け渡し方法を気にしない場合は、コピーで使用するだけの方が安全です(デフォルトの動作)。

于 2013-01-12T08:46:56.427 に答える
1

カカワイトの最後の発言は真実です。

関数を呼び出すとき$argsの代わりに使用する必要があります。&$args

于 2013-01-12T09:25:22.743 に答える