2014-12-05 79 views
0

当我在PHP中定义的功能f设置一个可选参数显式:调用PHP函数

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?例如

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

我正在使用5.5.12-2ubuntu4.1

+1

显然,您不能。但是您可以将参数作为关联数组传递。 – 2014-12-05 10:48:04

+1

PHP只支持位置参数。 – Gumbo 2014-12-05 10:51:10

回答

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使用默认值,你可以改变默认值都不会更改来电。

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 
-1

自PHP 5.6,你可以使用 “...” 的参数之前告诉解释,你的函数接受一个随机数fo参数。

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

+0

这是否允许您检查$ b而不是$ a? – 2014-12-05 11:10:13