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
        )

这个数组继续有更多的名字和月份。数据按名称排序,这意味着所有 James 项目都列在一个组中。每组名称可能有一个或多个数据点。我想做的是每个月循环并打印出第二个和第三个值。我知道如何使用 while 语句打印出所有内容,但我不确定如何按月对所有数据进行分组。

4

2 回答 2

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);
于 2013-09-28T23:55:16.263 回答
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
            }
        }
    }
于 2013-09-29T00:33:17.240 回答