我想对从数据库中检索到的记录应用用户定义的函数。要执行的函数动态传递给表单。如何实现。
Eg ;
$function = 'convert_number_to_words';
foreach ($query->result() as $row)
echo '<td>'.$row->num.'</td>';
函数convert_number_to_words必须用$ row-&gt; num作为参数。如何在上面的echo语句中实现。
答案 0 :(得分:1)
您可以使用:
foreach ($query->result() as $row){
echo '<td>'. call_user_func($func, $row->num) .'</td>';
}
或者(如果你需要传递匿名参数):
foreach ($query->result() as $row){
echo '<td>'. call_user_func_array($func, array($row->num)) .'</td>';
}
另一种解决方案是使用反射:
$func = new ReflectionFunction('yourfunc');
$func->invokeArgs( array($row->num));
但是你应该真的确保没有人可以在您的服务器上执行任意功能
答案 1 :(得分:1)
您可以使用call_user_func
用法:
$function_name = "convert_number_to_words";
foreach ($query->result() as $row) {
echo '<td>' . call_user_func($function_name, $row->num) . '</td>';
}
请记住,必须定义该功能,否则您将收到错误。
另外,不要信任用户输入,请确保检查指定的功能。例如,您可以使用白名单来完成此操作。
答案 2 :(得分:0)
它也有效:
$function = 'convert_number_to_words';
foreach ($query->result() as $row)
echo '<td>'.$function($row->num).'</td>';