我有一个数组,我需要将数组的每个元素作为参数传递给函数。
说:
$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,带有多个参数。我需要从arrray中获取参数。
有什么办法吗?
答案 0 :(得分:1)
这应该适合你:
首先,您需要创建一个引用相应变量的数组。您可以使用如下的foreach循环执行此操作:
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;
ListIterator<E> e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while (e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}
在此之后,您可以使用call_user_func_array()
来调用函数来绑定变量。这取决于您使用过程式还是OOP式:
程序:
foreach($var as $v) {
$bindValues[] = &$$v;
}
OOP:
call_user_func_array("mysqli_stmt_bind_param", array_merge([$stmt, $types], $bindValues));
答案 1 :(得分: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总是整数(就像你的示例默认键一样)那么这应该是好的。
答案 2 :(得分:-1)
call_user_func_array()
就是为了这个:
call_user_func_array(array($stmt, 'bind_param'), $var);