我在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
。
答案 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)