function getTemplate($tpl if ($vars) echo ", $vars";)...function
这有可能吗? 以上不会工作。
由于
答案 0 :(得分:6)
看起来你想要一个可选参数,你可以通过在函数定义中定义一个默认值来完成:
function getTemplate($tpl, $vars=null)
{
}
您可以将此函数称为getTemplate($ foo)或getTemplate($ foo,$ bar)。有关详细信息,请参阅PHP manual page on function arguments。
也可以编写带有可变数量参数的函数,但是您需要使用func_num_args,func_get_arg和func_get_args函数来获取它们。这是手册中的一个例子
<?php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
foo(1, 2, 3);
?>
为了更加完善这个答案,假设您构建了一个1..n值的数组,并希望将它传递给上面定义的foo()函数?您将使用call_user_func_array
$values=(1,2,3,4);
call_user_func_array('foo', $values);
这相当于调用
foo(1,2,3,4);
答案 1 :(得分:2)
有什么不好的
function getTemplate($tpl, $vars=null) {}
答案 2 :(得分:0)
if ($vars) { getTemplate($tpl, $vars); }
else {{ getTemplate($tpl, null); }
(半伪代码)
答案 3 :(得分:0)
或者:
getTemplate($tpl, ($vars)?$vars:null); // not sure
getTemplate($tpl, (!empty($vars))?$vars:null);
另外,如果你想要一种类似于echo的技术:
$code = "getTemplate($pl";
if ( $vars ) { $code = $code . ", $vars);"; }
else { $code = $code . ");"; }
$ret = eval($code);
虽然这通常被认为是不好的做法(从不说永远不会)。 请注意,发送到eval 的所有代码都将直接执行。所以不要将用户输入放在eval()调用中。