/ / Multidimensional Array-Grouping por mês - php, arrays, multidimensional-array

Agrupamento Multidimensional de Matrizes por mês - php, arrays, array multidimensional

Eu estou tentando percorrer meu caminho trabalhando maiscom arrays multidimensionais para diminuir o número de consultas SQL que estou tendo que fazer. O problema é que elas são novas para mim. Alguém pode me dar alguma orientação sobre como fazer isso?

Aqui está um exemplo da matriz:

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
)

Esta matriz continua com muito mais nomes emeses. Os dados são ordenados por nome, significando que todos os itens de James estão listados em um grupo. Cada grupo de nomes pode ter um ou mais pontos de dados. O que eu gostaria de fazer é percorrer cada mês e imprimir o segundo e o terceiro. Eu sei como fazer uma declaração while para imprimir tudo, mas não tenho certeza de como agrupar todos os dados por mês.

Respostas:

1 para resposta № 1

Experimente (assume que a matriz que você mostrou está atribuída à variável $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 para resposta № 2

Eu consegui fazer isso com uma versão modificada do código do jerdiggity ... e a única maneira de fazer funcionar é terrivelmente feia. Esses muitos loops aninhados são comuns?

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
}
}
}