PHP:函数传递大量数组作为参数

时间:2013-01-12 08:33:56

标签: php arrays function

我需要创建一个具有大量参数的函数,可以为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的键传递怎么办?必须有一些适当的方法来实现。

那么如何以如此有效的方式创建函数以将许多数组键作为参数传递?

非常感谢

2 个答案:

答案 0 :(得分:3)

15-20键并不是一个很大的阵列。当你需要考虑如何将某些东西传递给args时,就会有1000多个密钥。

无论如何,您可以使用“按引用传递”的概念(参见http://php.net/manual/en/language.references.pass.php)。当您必须将变量修改为函数而没有任何返回的语句时,此概念很有用。 但是为了实现这个目标,PHP只发送一个在内存中引用变量的键,而不是发送变量的副本。

此键不依赖于变量的大小。

如何使用?通过使用&amp;函数声明中的符号 例如:

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

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

但是如果使用“按引用传递”的概念,请注意不要修改$ args或$ args将在主脚本上进行修改。

最终世界:如果你的密钥少于50个,不关心如何传递你的args,只需使用副本(默认行为)就会更安全!

答案 1 :(得分:0)

Kakawait的最后陈述是真的。

调用函数时,您应该使用$args而不是&$args