在每次迭代中追加数组值

时间:2017-09-13 04:35:38

标签: php arrays codeigniter datatable

我有数据表,我需要在每次迭代中设置标题。数组包含所有标题。

这可以正常使用

 $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],);    
}

解决此问题的任何解决方案

3 个答案:

答案 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);