如何调用我想使用某些默认args的函数,以及我传入的一些函数:
function genericlist (array $arr, string $name, [string $attribs = null],
[string $key = 'value'], [string $text = 'text'],
[mixed $selected = NULL], [ $idtag = false], [ $translate = false])
我只想传入$ arr,$ name,$ selected并使用其他所有内容的默认值,我该怎么做?我知道我可以传递默认值并按顺序排列,但我必须采用另一种方式。谢谢。
答案 0 :(得分:1)
array_merge
可能会给您一个解决方案:
function func1($args = array())
{
$defaults = array('X' => 10, 'Y' => 30);
$args = array_merge($defaults, $args);
// $args now has default arguments and user supplied arguments
return $args;
}
func1(); // array('X' => 10, 'Y' => 30)
func1(array('X' => 40)); // array('X' => 40, 'Y' => 30)
答案 1 :(得分:0)
好吧,要么你确实传递了默认值,要么重新排序参数,以便在所有其他可选参数之前放入$ selected。
此外,您可以在PHP开发论坛上请求命名参数。
答案 2 :(得分:0)
我看到两个解决方案:
array_merge
之类的方法来组合“默认值”数组和新传递的参数值。示例1:
function abc($foo = null, $bar = null)
{
// defaulting parameters
if (is_null($foo)) $foo = 'Hello, world!'; // foo default value
if (is_null($bar)) $bar = 123.45; // bar default value
// on-ward with the function
}
// override bar, but not foo:
abc(null, 987.65);
示例2:
function def($args)
{
// defaulting parameters
$args = array_merge(
array(
'foo' => 'Hello, world!', // Default foo value
'bar' => 123.45 // default bar value
),
$args // override with supplied values
);
// on-ward with the function
}
// override bar, but not foo
def(array('bar'=>987.65));