我有数据表,我需要在每次迭代中设置标题。数组包含所有标题。
这可以正常使用
$this->table->set_heading("","$name[0]","$name[1]","$name[2]","$name[3]","$name[4]","$name[5]");
但我需要动态设置
$cnt=count(name);
for($i=0;$i<$cnt;$i++)
{
//$this->table->set_heading($name[$i],);
}
解决此问题的任何解决方案
答案 0 :(得分:2)
set_heading
确实接受数组,而不是传递单个参数。因此,您可以将代码更改为
$this->table->set_heading("", $name);
您可以在此处找到更多信息:https://www.codeigniter.com/user_guide/libraries/table.html
答案 1 :(得分:0)
您正在调用的函数接受一个数组,但对于不能执行的函数,您可以使用以下技术。
您可以使用call_user_func_array
。
$args = [""];
$cnt = count($name);
for($i = 0; $i < $cnt; ++$i)
$args[] = $name[$i];
call_user_func_array([$this->table, 'set_heading'], $args);
如果你真的不关心索引,那么循环也可能会好一些,即:
$args = [""];
foreach($name as $arg)
$args[] = $arg;
call_user_func_array([$this->table, 'set_heading'], $args);
或者,你可以复制数组并将第一个参数移到数组
$args = $name;
array_unshift($args, "");
call_user_func_array([$this->table, 'set_heading'], $args);
请注意,用双引号(即:"$name[0]"
)包围您的参数虽然在技术上是正确的并且可行,但形式不佳并且性能降低,只需在没有双引号的情况下直接使用它们。
答案 2 :(得分:0)
如果$ name是标题字符串数组,例如
$name = array("first", "last", "address", "phone");
然后您需要做的就是
$this->table->set_heading($name);