可能重复:
有没有办法在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";
}
}