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

时间:2014-12-05 10:43:09

标签: 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-2ubuntu4.1

3 个答案:

答案 0 :(得分:0)

您可以将此功能定义为:

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来使用默认值,稍后你可以在不改变调用者的情况下更改默认值。

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

自PHP 5.6起,您可以使用" ..."在一个参数之前告诉解释器你的函数接受一个随机数的参数。

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