0

我有一个数组,我需要将数组的每个元素作为参数传递给函数。

说:

$var = array("var2","var3","var4");
//Pass each element as a new parameter to a function
call_to_function ($var2, $var3, $var4);

//However, if the number of array element change it can be
$var = array("var2","var3");
call_to_function ($var2,$var3);

这里的问题是,如何构建动态数量的参数并调用函数。

使用: PHP 函数mysqli_stmt::bind_param,接受多个参数。我需要从数组中导出参数。

有什么办法吗?

4

3 回答 3

1

这应该适合你:

首先,您需要创建一个引用相应变量的数组。您可以使用如下的 foreach 循环简单地执行此操作:

foreach($var as $v) {
        $bindValues[] = &$$v; 
}

在此之后,您可以使用call_user_func_array()调用函数来绑定变量。这取决于您使用的是过程式还是 OOP 风格:

程序:

call_user_func_array("mysqli_stmt_bind_param", array_merge([$stmt, $types], $bindValues));

哎呀:

call_user_func_array([$stmt, "bind_param"], array_merge([$types], $bindValues));
于 2015-05-15T07:59:51.790 回答
1

您可以使用 eval() 调用具有动态参数数量的函数。

// Construct the parameter string like "$var[0], $var[1], $var[2]"
$param_str = '';
foreach($var as $key => $val) {
    $param_str .= '$var['.$key.'],';
}
$param_str = rtrim($param_str, ',');

eval('call_to_function('.$param_str.');');

eval() 的使用不被认为是好的做法,但如果你确定你的数组键 $var 总是整数(就像你的示例默认键一样),那么这应该很好。

于 2015-05-15T08:16:49.437 回答
-1

call_user_func_array()只是为了:

call_user_func_array(array($stmt, 'bind_param'), $var);
于 2015-05-15T10:34:17.983 回答