我需要创建一个具有大量参数的函数,可以为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的键传递怎么办?必须有一些适当的方法来实现。
那么如何以如此有效的方式创建函数以将许多数组键作为参数传递?
非常感谢
答案 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
。