按日期对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);
?>