2013-09-28 3 views
0

Я пытаюсь проложить свой путь, работая больше с многомерными массивами, чтобы уменьшить количество SQL-запросов, которые мне нужно выполнить. Проблема в том, что они новы для меня. Может ли кто-нибудь дать мне какое-то направление, как это сделать?Многомерный массив - группировка по месяцам

Вот пример массива:

Array 
(
    [0] => Array 
     (
      [0] => 2013-07-01 
      [1] => Andy 
      [2] => Hopkins Module 
     ) 

    [1] => Array 
     (
      [0] => 2013-07-01 
      [1] => Frank 
      [2] => Rotation 
     ) 

    [2] => Array 
     (
      [0] => 2013-07-01 
      [1] => James 
      [2] => Morning Report 
     ) 

    [3] => Array 
     (
      [0] => 2013-08-01 
      [1] => James 
      [2] => Noon Conference 
     ) 

Этот массив продолжает с гораздо более имен и месяцев. Данные упорядочены по имени, то есть все элементы Джеймса перечислены в группе. Каждая группа имен может иметь один или несколько точек данных. То, что я хотел бы сделать, это цикл через каждый месяц и распечатка второго и третьего значений. Я знаю, как сделать заявление while, чтобы распечатать все, но я не уверен, как группировать все данные по месяцам.

+1

Это неправильный путь. Во-первых, вы должны попытаться оптимизировать свой SQL таким образом, что вам не придется слишком много работать над массивами, чем позже. – djot

+0

Вот несколько хороших идей: http://stackoverflow.com/questions/2189626/group-a-multidimensional-array-by-a-particular-value (я ** мог ** писать код, но лучше/более полезно, если вы сделаете это сами). – Styxxy

+0

@djot, данные не обязательно должны поступать из базы данных SQL. – Styxxy

ответ

1

Дайте этому попытку (это предполагает, что массив вы показали, присваивается переменной $old_array):

foreach ($old_array as $key => $value) { 
    $new_array[$value[0]][] = array($value[1], $value[2]); 
} 
// Uncomment the next line to print the new array 
// print_r($new_array); 
0

Я был в состоянии сделать это с модифицированной версией кода jerdiggity ... и единственный способ Я мог заставить его работать ужасно уродливо. Являются ли эти много вложенных циклов общими?

foreach ($incomplete as $key => $value) { 
     $new_array[$value[0]][$value[1]][] = $value[2]; 
    } 


    foreach($months as $k=>$v) { 
     $format = formatDate($v); 
     echo $format; // date formatted as readable 
     foreach($new_array[$format] as $k1=>$v1){ 
      echo $k1.'<br>'; //name of person 
      foreach($v1 as $k2=>$v2) { 
       echo $v2.'<br>'; //third value or original array 
      } 
     } 
    } 
Смежные вопросы