可能重复:
是否可以跳过php(5(函数调用中具有默认值的参数?
假设这是我的功能:
function myFunc($a ,$b = 'ball',$c = 'cat')
{
echo "$a $b $c" ;
}
myFunc("apple"); // output : "apple ball cat"
myFunc("apple","box"); // output : "apple box cat"
如何使用$b
的默认参数调用myFunc
,例如
myFunc("apple", SOMETHING_HERE , "cow" ); // output : "apple ball cow"
您不能通过在函数原型中设置默认值来做到这一点:
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" ;
}
您可以使用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');
话虽如此,我认为这样做不是最好的做法。你应该重新审视一下你的函数设计——也许你只需要稍微重构一些东西,这样它就会更直观。