2010-04-29 2 views
0

У меня есть модель и контроллер, который получает некоторые данные из моей базы данных и возвращает следующий массивCodeIgniter: проблема с использованием Еогеаспа ввиду

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

+0

нет проблем, я просто не знаю, какое имя использовать в foreach для циклического прохождения элементов массива. Если я использую $ year as $ y, это даст сообщение: Invalid аргумент, предоставленный foreach() – Christophe

ответ

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

+0

исправлено !! попробуйте еще раз – Galen

+0

Я забыл, что codeigniter извлекает ключи из массивов, называя переменные вида после ключей. – Galen

Смежные вопросы