按日期对php数组进行分组

按日期对php数组进行分组,php,arrays,datetime,grouping,Php,Arrays,Datetime,Grouping,我有一个数组: Array ( [0] => Array ( [id] => 81 [placed] => 2013-09-19 16:32:53 [sub_total] => 786 ) [1] => Array ( [id] => 80 [placed] => 201

我有一个数组:

Array
(
    [0] => Array
        (
            [id] => 81
            [placed] => 2013-09-19 16:32:53
            [sub_total] => 786
        )

    [1] => Array
        (
            [id] => 80
            [placed] => 2013-09-19 16:32:06
            [sub_total] => 780
        )

    [2] => Array
        (
            [id] => 79
            [placed] => 2013-09-18 17:06:48
            [sub_total] => 786
        )

    [3] => Array
        (
            [id] => 78            
            [placed] => 2013-09-18 17:05:02
            [sub_total] => 756
        )

    [4] => Array
        (
            [id] => 77          
            [placed] => 2013-09-17 17:02:53
            [sub_total] => 786
        )

    [5] => Array
        (
            [id] => 76
            [placed] => 2013-09-16 17:02:53
            [sub_total] => 756
        )
)
是否可以按日期将此数据分组并汇总小计金额以获得输出数组:

 Array
    (
        [0] => Array
            (
                [placed] => 2013-09-19
                [sub_total] => 786 + 780
            )

        [2] => Array
            (
                [placed] => 2013-09-18
                [sub_total] => 786 + 756
            )

        [3] => Array
            (
                [placed] => 2013-09-17 17:02:53
                [sub_total] => 786
            )

        [4] => Array
            (
                [placed] => 2013-09-16 17:02:53
                [sub_total] => 756
            )
    )

学分:这把小提琴上使用的初始数组取自下面Jason OOO的答案


学分:这把小提琴上使用的初始数组取自下面Jason OOO的答案。

您可以在查询时使用这种数组。差不多

select date_field_name,other_field from table_name group by Day(date_feild_name);

之后,您可以使用use foreach处理每天的数据

您可以在查询时使用这种数组。差不多

select date_field_name,other_field from table_name group by Day(date_feild_name);
之后,您可以使用use foreach处理每天的数据

我也测试了这个:


我也测试了这个:


尝试使用子查询

     select field_name,DAY(date_field) as date,(select sum(sub_total) where DAY(date_field)=date) as sub_total from table_name group by day(date_field)
尝试使用子查询

     select field_name,DAY(date_field) as date,(select sum(sub_total) where DAY(date_field)=date) as sub_total from table_name group by day(date_field)
试试这个代码
试试这段代码

如果查询结果来自数据库,为什么不从查询中执行?如果查询结果来自数据库,为什么不从查询中执行?错误:未定义索引:2013-09-19这是通知,不是错误。如果您愿意,您可以在之前定义该索引。错误:未定义索引:2013-09-19这是通知,不是错误。如果您愿意,您可以在之前定义该索引。该索引返回我:Array([2013-09-19]=>Array([Plate]=>2013-09-19[total_price]=>1850.6是否可以获得如下输出:Array([0]=>Array([Plate]=>2013-09-19[total_price]=>1850.6是,
print\r(array_values($newarray));
所以答案是使用
$newarray=array_values($newarray);
这会返回我:array([2013-09-19]=>array([placed]=>2013-09-19[total_price]=>1850.6是否可以得到这样的输出:array([0]=>array([placed]=>2013-09-19[总价]=>1850.6是的,
print\r(数组值($newarray));
所以答案是使用
$newarray=数组值($newarray);
Try this code
<?php
$shop = array(array( id => '81', 
                      placed => '2013-09-19',
                      sub_total => '786' 
                    ),
             array( id =>'80', 
                      placed => '2013-09-19',
                      sub_total => '780',
                    ),
              array( id => '79', 
                      placed => '2013-09-18',
                      sub_total => '786' 
                    ),
              array
                        (
                    id => '78',            
                    placed => '2013-09-18',
                    sub_total => '756'
                 ),
            array(
                     id => '77',          
                    placed => '2013-09-17',
                    sub_total => '786'
            ),
            array(
                     id => '76',          
                    placed => '2013-09-16',
                    sub_total => '756'
            )
             );
$result=array();
foreach($shop as $value)
{
    if(!isset($result[$value['placed']]))
    {
        //echo $value['placed'];
        //echo $result[$value['placed']];
        $result[$value['placed']]=array('placed'=>$value['placed'],'sub_total'=>0);


    }
    $result[$value['placed']]['sub_total']+=$value['sub_total'];
}

print_r($result);
//print_r($shop);
?>