在PHP中打印所有函数参数
以下是我的裸体插件系统:在PHP中打印所有函数参数,php,arrays,function,arguments,Php,Arrays,Function,Arguments,以下是我的裸体插件系统: function DoPlugin() { $fargs = func_get_args(); $type = $fargs[0]; $args = range($fargs[1], $fargs[count($fargs)]); if(function_exists($type)) call_user_func($type, $args); else echo "Function doesn
function DoPlugin() {
$fargs = func_get_args();
$type = $fargs[0];
$args = range($fargs[1], $fargs[count($fargs)]);
if(function_exists($type))
call_user_func($type, $args);
else
echo "Function doesn't exist!";
}
function MyPlugin() {
$fargs = func_get_args();
$args = range($fargs[0], $fargs[count($fargs)]);
$strArgs = implode(" ", $args);
echo $strArgs;
}
$args = array("MyPlugin", "Egg", "Milk");
DoPlugin($args[0], range($args[1], $args[count($args)]));
它应该调用函数“DoPlugin”,然后用所有参数调用“MyPlugin”,然后“MyPlugin”将它们打印出来,并用空格隔开
这就是它的输出:
1 0
这就是我希望它输出的内容:
Egg Milk
如何打印一个函数的所有参数,并用空格分隔?您需要使用而不是自定义函数DoPlugin
:
function MyPlugin(){
echo implode(" ", func_get_args());
}
$args = array("MyPlugin", "Egg", "Milk");
call_user_func_array(array_shift($args), $args);
输出将是:
蛋奶
演示:
假设您要发送此DoPlugin()的两个参数代码>
调用函数时发送参数值range()
已返回一个数组-因此在另一个数组中有一个数组。更新帖子。它现在输出“10”。你需要认真思考你到底想在这里做什么。您希望参数逐个传递还是分组在数组中?就目前情况而言,这是混淆的,可能会导致你不想要的结果。如果要将数组的第一个元素与rest分开,也可以使用array\u shift()
。我要检查数组中的第一个参数是否与函数相同,如果相同,则使用其余参数调用函数。我还希望示例函数打印传递给它的所有参数,并用空格分隔。抱歉,如果我弄糊涂了,我从来都不善于解释。DoPlugin($args[0]、$args[1]、$args[2])代码><如何传递$args中的所有键?我希望用户提供一些参数,但我不知道会有多少参数。您也可以在那里使用call\u user\u func
:call\u user\u func(“DoPlugin”,$args)代码>例如@kingkero干杯,它现在正是我想要的。@那么你能再次将其标记为已接受吗?这里的技巧实际上是调用用户函数数组()
(=>DoPlugin($arg0,$arg1,…)
而不是调用用户函数()
(=>DoPlugin(array($arg0,$arg1,…))
)
DoPlugin() this your function
DoPlugin($arg1,$agr2)