更新
回顾下面的答案的。如果这两个函数接受相同的参数,以相同的顺序,你可以简单地使用变量函数:
if (strpos($s, 'sign') === false) {
$func = 'my_mpurl';
} else {
$func = 'mpurl';
}
$func($s, $pagevar, $pages);
如果由于某种原因,你无法升级,并坚持使用旧版本,你可以使用call_user_func_array
:
if (strpos($s, 'sign') === false) {
$func = 'my_mpurl';
} else {
$func = 'mpurl';
}
call_user_func_array($func, array($s, $pagevar, $pages));
当然,你可以使用$func
var当成你想要/多需要打电话时,你需要的功能。
因此,基本上,根据某个变量的值,您希望使用相同的参数调用不同的函数。这就是call_user_func_array
是:
if (strpos($s, 'sign') === false) {
$func = 'my_mpurl';
} else {
$func = 'mpurl';
}
call_user_func_array($func, array($a, $b, $c));
同样的事,但一点点的缩短(与短数组语法):
$func = 'mpurl';
if (strpos($s, 'sign') === false)
$func = 'my_'.$func;//prepend
call_user_func_array($func, [$s, $pagevar, $pages]);
//or even shorter
$func($s, $pagevar, $pages);
可变值作为函数名(可变功能)语法介绍在PHP 5.3中。如果你还没有运行5.3,你应该升级,但同时,你可以使用call_user_func_array
或者你做'$ func($ a,$ b,$ c);':-) – jeroen 2014-10-30 15:42:50
@jeroen:只是测试,以确保它甚至可能,将它添加到我的答案 – 2014-10-30 15:44:08
是的,http:///php.net/manual/en/functions.variable-functions.php – jeroen 2014-10-30 15:44:32