可能重复:
Is it possible to skip parameters that have default values in a php(5) function call?
让我们说这是我的功能:
function myFunc($a ,$b = 'ball',$c = 'cat')
{
echo "$a $b $c" ;
}
myFunc("apple"); // output : "apple ball cat"
myFunc("apple","box"); // output : "apple box cat"
如何使用myFunc
的默认参数调用$b
,例如
myFunc("apple", SOMETHING_HERE , "cow" ); // output : "apple ball cow"
答案 0 :(得分:1)
您不能通过在函数原型中设置默认值来实现:
function myFunc($a ,$b = 'ball',$c)
{
echo "$a $b $c" ;
}
但是有一种解决方法:
function myFunc($a ,$b = null,$c = null)
{
if ($b === null)
$b = 'ball';
if ($c === null)
$c = 'cat';
echo "$a $b $c" ;
}
答案 1 :(得分:0)
您可以使用func_get_args函数和一些应使用默认值的特殊指示(例如,传递NULL
):
function myFunc() {
$params = func_get_args();
$defaults = array('apple', 'ball', 'cow'); //your default values
foreach ($params as &key => &$value) {
if ($value === NULL) $value = $defaults[$key];
}
myFunc('apple', NULL, 'cow');
话虽如此,我认为做这样的事情不是最好的做法。你应该再次研究你的功能设计 - 也许你只需稍微重构一下,这样会更直观。