代码点火器foreach和视图

时间:2011-01-14 15:54:17

标签: php codeigniter foreach

我在控制器中使用foreach循环

foreach ($x as $y) {
// do some stuff 
// load view
            $this->load->view('success', $data);
// $data can be multiple arrays
}

它完成了工作..但视图中的css,js,元素会重复...

请指导我如何使css,js只加载一次:)

感谢

3 个答案:

答案 0 :(得分:1)

这是因为您在foreach语句中加载视图。每次循环遍历时,视图都会再次加载。您需要在循环中收集$data,然后在循环结束后调用视图。

答案 1 :(得分:1)

foreach ($x as $y) {
// do some stuff 
// $data can be multiple arrays
}

//load the view after the foreach has finished
$this->load->view('success', $data);

您当前正在循环的每次迭代中重复加载视图。像这样,它会在循环结束后加载它。

第二个想法

从您的代码中,我相信您在循环的每次迭代中重新分配您的$data变量

foreach ($x as $y) {
// do some stuff 
// 
    $data['array'] = array("here","is","an","array");
}

//load the view after the foreach has finished
$this->load->view('success', $data);

在上面的例子中,一旦加载了视图,$ data ['array']中就会有一个数组,因为你每次都会覆盖它。如果你想让$data['array']像你建议的那样成为一个多级数组,试试这个......

foreach ($x as $y) {
// do some stuff 
// 
    $data['array'][] = array("here","is","an","array");
}

//load the view after the foreach has finished
$this->load->view('success', $data);

这将附加$data['array']而不是覆盖它,并且你最终会得到一个数组,其中包含整个循环中附加到它的任何内容。

答案 2 :(得分:1)

很可能“做一些事情”需要放在多维数组中,而不是直接放在$data数组中。最好发布你的“做一些事情”和你的观点,但无论如何,你应该这样做:

$data_holder = array();
foreach ($x as $y) {
// do some stuff 
$data_holder[] = $do_some_stuff_results;
}
$data['do_stuff_array'] = $data_holder;
$this->load->view('success', $data);

现在,您可以在视图中循环该变量,而不仅仅得到一个结果,可能是:

foreach ($do_stuff_array as $arr)
    echo "<li><img src=\"" . $arr['img_src'] . "\" alt=\"" . $arr['img_title'] . "\" /></li>";
相关问题