多维数组 - 按月分组

时间:2013-09-28 23:31:57

标签: php arrays multidimensional-array

我正试图通过使用多维数组来减少我不得不做的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语句来打印出所有内容,但我不确定如何按月对所有数据进行分组。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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
            }
        }
    }