我有一个数组:
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
)
)
答案 0 :(得分:4)
$output=array();
foreach($yourArray as $values)
{
$d=date("Y-m-d",strtotime($values["placed"]));
$output[$d]["sub_total"]+=$values["sub_total"];
}
print_r($output);
<强> Fiddle 强>
致谢:这个小提琴上使用的最初数组来自Jason OOO的回答。
答案 1 :(得分:2)
您可以在查询时使用这种数组。像
这样的东西select date_field_name,other_field from table_name group by Day(date_feild_name);
之后你可以使用foreach来处理每一天的数据!
答案 2 :(得分:2)
我也对此进行了测试:http://phpfiddle.org/main/code/rzv-ngp
<?php
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'
),
//...
);
$newarray = array();
foreach ($array as $value){
$temp = explode(" ", $value['placed']);
$date = $temp[0];
$total = (isset($newarray[$date]['sub_total']) ? $newarray[$date]['sub_total'] + $value['sub_total']: $value['sub_total']);
$newarray[$date] = array('placed' => $date, 'sub_total' => $total);
}
print_r($newarray);
?>
答案 3 :(得分:2)
尝试使用子查询
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)
答案 4 :(得分:0)
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);
?>