2

我需要创建一个函数,它有大量参数可以是空值或值。现在我正在创建如下示例的函数:

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 只需发送一个引用内存中变量的键,而不是发送变量的副本。

并且这个键不依赖于变量的大小。

如何使用?通过在函数声明中使用 & 符号,例如:

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

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

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

最终世界:如果你有少于 50 个键不关心如何传递你的参数,只使用复制(默认行为)会更安全!

于 2013-01-12T08:46:56.427 回答
1

Kakawait 的最后一句话是真的。

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

于 2013-01-12T09:25:22.743 回答