调用PHP函数时显式设置可选参数

调用PHP函数时显式设置可选参数,php,function,parameter-passing,optional-parameters,Php,Function,Parameter Passing,Optional Parameters,我在PHP中定义了函数f: function f($r, $o1="1", $o2="2") { echo($r . $o1 . $o2 . "\n"); } 现在我可以调用f(1)不带可选参数,(2)带第一个或(3)带两个可选参数: f(0); // 012 f(0, "a"); // 0a2 f(0, "a", "b"); // 0ab 是否也可以仅使用第二个参数调用f?e、 g f(0, $o2="X"); // 01X 我使用的是5.5.12-2ub

我在PHP中定义了函数
f

function f($r, $o1="1", $o2="2") { echo($r . $o1 . $o2 . "\n"); }
现在我可以调用
f
(1)不带可选参数,(2)带第一个或(3)带两个可选参数:

f(0);           // 012
f(0, "a");      // 0a2
f(0, "a", "b"); // 0ab
是否也可以仅使用第二个参数调用
f
?e、 g

f(0, $o2="X");  // 01X

我使用的是
5.5.12-2ubuntu4.1

您可以将函数定义为:

function f($r, $o1=null, $o2=null) {
  if(is_null($o1)) $o1 = "1";
  if(is_null($o2)) $o1 = "2";
  echo($r . $o1 . $o2 . "\n");
}

现在您知道,您可以始终通过传递null来使用默认值,并且以后可以在不更改调用者的情况下更改默认值。

您可以将所有参数设置为可选:

function f($r = null, $o1 = "1", $o2 = "2")
{
    $r = $r ? : 0;
    echo($r . $o1 . $o2 . "\n");
}
这将为您提供:

f(0);           // 012
f(null, "a");   // 0a2
f(1, "a");      // 1a2

从PHP5.6开始,您可以在参数前使用“…”告诉解释器您的函数接受随机数的参数

在PHP5.6之前,可以传递数组而不是参数列表。
您还可以使用func-get-arg()或func-get-args()检查第二个参数是否“禁用”(即:==null)

显然,您不能。但是您可以像关联数组一样传递参数。PHP只支持位置参数。这是否允许您检查传递的是$b而不是$a?