У меня есть таблица данных, и мне нужно установить заголовок в каждой итерации. Массив содержит все заголовки.
это работает правильно
$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],);
}
Любое решение для решения этой проблемы
Вместо передачи отдельных параметров, set_heading
принимает массив. Таким образом, вы можете изменить свой код на
$this->table->set_heading("", $name);
Вы можете найти больше информации здесь: https://www.codeigniter.com/user_guide/libraries/table.html
Вызываемая функция принимает массив, но для функций, которые этого не делают, вы можете использовать описанную ниже технику.
Ты можешь использовать 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]"
) хотя это технически правильно и будет работать, плохая форма и снижает производительность, просто используйте их напрямую без двойных кавычек.
если $ name это массив строк заголовков, например
$name = array("first", "last", "address", "phone");
Тогда все, что вам нужно сделать, это
$this->table->set_heading($name);