如何动态调用PHP方法并传递不在数组中的多个变量?

时间:2016-05-13 14:48:38

标签: php arrays reflection

我希望能够调用一个php函数,但是只有输入的元素数量匹配函数接受的元素数量,如果它匹配,我想逐个传递它们而不是作为数组

目前我有以下代码可以完成这项工作,但是很麻烦。

call_user_func($functionname, $vars);

当我有一个预期4个元素的数组的函数但是只传递了3时遇到了问题。必须检查并确保所有的vars存在使得编写函数有点混乱。我有一个基于反射的更好的解决方案。 how to dynamically check number of arguments of a function in php,但我是最后一步。如果参数的数量与函数中的参数数量匹配,我可以调用该方法,但我不知道如何正确调用该方法。我有一系列变量。我需要将这些传递给函数,以便我可以执行以下操作。

function foo($var1, $var2, $var3)
{
    //I know all 3 vars exist and dont need to verify first
}
if(count($arrayof3elements) == get_method_var_count("foo") {
    dynamically_call_method("foo", $arrayof3elements);
}

1 个答案:

答案 0 :(得分:2)

不使用key,而是使用call_user_func - 这允许您传递一个参数数组,但将它们作为单独的东西传递给方法。

call_user_func_array