【问题标题】:Code Igniter foreach and viewCodeigniter foreach 和视图
【发布时间】:2011-01-14 15:54:16
【问题描述】:

我在我的控制器中使用了一个 foreach 循环

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

它可以工作..但是视图中的 css、js 和元素会重复..

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

谢谢

【问题讨论】:

  • “成功”视图中的内容是什么?

标签: php codeigniter foreach


【解决方案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>";

【讨论】:

    【解决方案2】:

    这是因为您在 foreach 语句中加载视图。每次循环进行时,视图都会再次加载。您需要在循环中一起收集您的$data,然后在循环完成后调用视图。

    【讨论】:

      【解决方案3】:
      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'] 而不是覆盖它,您最终会得到一个数组,其中包含在整个循环中追加到它的任何内容。

      【讨论】:

      • 嗨,我已经尝试过了..但没有成功,出于测试目的,我已将 print_r 添加到视图中..但只有生成的第一个数组在视图中回显..所有本应在循环中工作的功能正在工作(更新数据库等)。
      • 好的,我在这里做了很多假设,因为你没有给我们任何代码,但我会用另一个猜测来更新我的答案。
      猜你喜欢
      • 2015-07-13
      • 2015-08-12
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多