2011-01-14 151 views
0

我使用foreach循環在我的控制器代碼點火器的foreach和查看

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

它的work..but的CSS,JS,在視圖中的元素被反覆..

請指導我如何使CSS,JS只加載一次:)

感謝

+1

'成功'視圖是什麼? – 2011-01-14 15:58:01

回答

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>"; 
1

這是因爲你在加載foreach語句的看法。每當循環進行時,視圖都會重新加載。您需要在循環中收集您的$data,然後在循環結束後調用視圖。

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']是一個多deminsional陣列喜歡你的建議,試試這個...

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'],而不是覆蓋它,你會用什麼的你追加數組結束在整個循環中。

+0

嗨,我已經嘗試過..但沒有成功,爲了測試目的,我已經將print_r添加到視圖中..但只有生成的第一個數組被回顯在視圖中..所有的功能都是爲了工作在循環中工作(更新數據庫等)。 – Vamsi 2011-01-14 16:33:58