我们大多数人都知道以下语法:
function funcName($param='value'){
echo $param;
}
funcName();
Result: "value"
我们想知道如何为“not last”参数传递默认值?我知道这个术语已经过时了,但一个简单的例子是:
function funcName($param1='value1',$param2='value2'){
echo $param1."\n";
echo $param2."\n";
}
我们如何完成以下任务:
funcName(---default value of param1---,'non default');
结果:
value1
not default
希望这是有道理的,我们想基本上假设不是最后一个参数的默认值。
谢谢。
最佳答案
PHP 不支持您尝试执行的操作。这个问题的通常解决方案是传递一个参数数组:
function funcName($params = array())
{
$defaults = array( // the defaults will be overidden if set in $params
'value1' => '1',
'value2' => '2',
);
$params = array_merge($defaults, $params);
echo $params['value1'] . ', ' . $params['value2'];
}
示例用法:
funcName(array('value1' => 'one')); // outputs: one, 2
funcName(array('value2' => 'two')); // outputs: 1, two
funcName(array('value1' => '1st', 'value2' => '2nd')); // outputs: 1st, 2nd
funcName(); // outputs: 1, 2
使用这个,所有参数都是可选的。通过传递参数数组,数组中的任何内容都将覆盖默认值。这可以通过使用 array_merge()
来实现。它合并两个数组,用第二个数组中的任何重复元素覆盖第一个数组。
关于PHP默认函数参数值, 'pass default value'参数如何 'not last'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597114/