2010-04-29 64 views
0

我有誰得到從我的數據庫中的一些數據,並返回以下陣列笨:使用的foreach問題鑑於

Array 
(
    [2010] => Array 
     (
      [year] => 2010 
      [months] => Array 
       (
        [0] => stdClass Object 
         (
          [sales] => 2 
          [month] => Apr 
         ) 

        [1] => stdClass Object 
         (
          [sales] => 1 
          [month] => Nov 
         ) 

       ) 

     ) 

    [2011] => Array 
     (
      [year] => 2011 
      [months] => Array 
       (
        [0] => stdClass Object 
         (
          [sales] => 1 
          [month] => Nov 
         ) 

       ) 

     ) 

) 

這表明正是它應該表現出更關鍵的有不同的名稱,所以我的模型和控制器我不知道如何循環使用foreach在我看來的歲月。數組的東西我不是很擅長尚未:(

這是控制器,如果你需要知道:

function analytics() 
    { 
     $this->load->model('admin_model'); 
     $analytics = $this->admin_model->Analytics(); 
     foreach ($analytics as $a): 
      $data[$a->year]['year'] = $a->year; 
      $data[$a->year]['months'] = $this->admin_model->AnalyticsMonth($a->year); 
     endforeach; 

     echo"<pre style='text-align:left;'>"; 
     print_r($data); 
     echo"</pre>"; 

     $data['main_content'] = 'analytics'; 
     $this->load->view('template_admin', $data); 
    }//end of function categories() 
+0

和你錯誤是? – Salil 2010-04-29 15:21:03

+0

沒有問題,我只是不知道在foreach中使用哪個名稱來循環訪問數組項。如果我使用$ year作爲$ y,它會給消息:爲foreach提供的無效參數() – Christophe 2010-04-29 15:39:22

回答

2

把多年的陣列在一個單獨的索引數組中,因此您可以隔離它

foreach ($analytics as $a) { 
    $data['dates'][$a->year]['year'] = $a->year; 
    $data['dates'][$a->year]['months'] = $this->admin_model->AnalyticsMonth($a->year); 
} 

然後你可以通過這個循環,而無需擔心其他數據

<?php foreach($dates as $year => $year_content ): ?> 
<h2><?php echo $year ?></h2> 

<?php foreach($year_content['months'] as $months): ?> 
<h3><?php echo $months->month ?> - <?php echo $months->sales ?></h3> 
<?php endforeach; ?> 

<?php endforeach; ?> 
+0

謝謝,但我得到未定義的變量:數據(在視圖中) – Christophe 2010-04-29 15:45:50

+0

已修復!再試一次 – Galen 2010-04-29 16:18:08

+0

我忘了codeigniter從數組中提取密鑰,並在密鑰後命名視圖變量。 – Galen 2010-04-29 16:18:53