3

可能重复:
有什么方法可以在 PHP 中指定可选参数值?
PHP 函数 - 忽略一些默认参数

假设我有这样的功能:

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

我这样打电话:

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

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

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

提前致谢。

4

4 回答 4

3

你可以试试这个-

$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);

请在使用前进行测试。

于 2013-01-02T13:28:31.007 回答
2

你的代码

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

如果第一个参数为空,也会在第一个参数中传递 NULL,这样编译器就会知道它取决于第二个参数。在参数列表中有 acomma已经告诉 PHP 这里有两个参数。

于 2013-01-02T13:26:19.993 回答
0

您可以通过将空字符串传递给函数并在函数中检测传递的参数是否为空字符串,如果是,则将其替换为默认值。这将使您的函数调用如下:

foo('','lastname');

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

function foo($name = "john", $surname = "smith") { 
    if($name==='') { $name = 'john'}
    //more code 
    ... }
于 2013-01-02T13:27:07.487 回答
0

我通常会这样做:

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";  
    }
}
于 2013-01-02T13:29:47.607 回答