PHP使用默认参数调用函数,但是在参数列表的中间?

时间:2011-11-09 10:42:05

标签: php

  

可能重复:
  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"

2 个答案:

答案 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');

话虽如此,我认为做这样的事情不是最好的做法。你应该再次研究你的功能设计 - 也许你只需稍微重构一下,这样会更直观。