许多可选参数


many optional parameters

可能重复:
有没有办法在PHP中指定可选的参数值
PHP函数-忽略一些默认参数

假设我有这样的函数:

function foo($name = "john", $surname = "smith") { ... }

我是这样打电话的:

$test = foo("abc", "def");

想象一下,现在我想跳过名字,只使用姓氏,这是怎么实现的?如果我只做$test=foo("def"(;编译器怎么能知道我指的是姓氏而不是名字?我知道可以通过传递NULL来完成,但我需要这样做:

$test = foo($_POST['name'], $_POST['surname']);

提前谢谢。

你可以试试这个-

$num_args = func_num_args();
if($num_args == 1)
 $surname = func_get_arg(1);
else
 $surname = func_get_arg(2);
 $name = func_get_arg(1);

请在使用前对其进行测试。

您的代码

$test = foo($_POST['name'], $_POST['surname']);

如果第一个PARAMETER为空,也会在它中传递NULL,这样编译器就会知道它达到了第二个参数。参数列表中有一个comma已经通知PHP这里有两个参数。

您可以将一个空字符串传递给函数,并在函数中检测传递的参数是否为空字符串,如果是,则用默认值替换它。这将使您的函数调用类似于:

foo('','lastname');

您可以将这几行添加到函数的开头,以检测是否有空字符串作为参数传递:

function foo($name = "john", $surname = "smith") { 
    if($name==='') { $name = 'john'}
    //more code 
    ... }

我通常会这样做:

function foo($parameters = array())
{
    print_r($parameters);
}
foo($_POST); //will output the array

当我期望超过3个参数时,这就是我所使用的。

但您也可以使用以下内容:

function foo()
{
    $args = func_get_args();  
    foreach ($args as $arg) {  
        echo "$arg 'n";  
    }
}