for($j=0;$j<count($data);$j++) {for($i = $begin; $begin <= $end; $i->modify('+1 day')){
$totaldistance=0;
$totalorder=0;
for($j=0;$j<count($data);$j++) {
$unixtime_=$data[$j]['create_date'];
$distance=$data[$j]['distance'];
$distance=$data[$j]['distance'];
//$orginal_time= substr($unixtime_,0,10);
$start_date_orignal=date_format(date_create($unixtime_),'Y-m-d');
//echo '<br>';
if($i->format("Y-m-d") == $start_date_orignal){
$totaldistance=$totaldistance+$distance;
$totalorder=$totalorder+1;
$wholedata1[]=array('start_date_orignal'=>$start_date_orignal,'totaldistance'=>$totaldistance,'totalorder'=>$totalorder);
echo "<pre>";
echo $i->format("Y-m-d").'='.$start_date_orignal.'='.$totaldistance.'='.$totalorder;
echo "</pre>";
if(in_array($start_date_orignal,$wholedata)){
echo "sasa";
}else{
echo "1221";
array_push($wholedata,array('start_date_orignal'=>$start_date_orignal,'totaldistance'=>$totaldistance,'totalorder'=>$totalorder));
}
}
}
}
输出
Array
(
[0] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 1
)
[1] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 2
)
[2] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 3
)
[3] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 4
)
[4] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 5
)
[5] => Array
(
[start_date_orignal] => 2016-05-23
[totaldistance] => 0
[totalorder] => 6
)
[6] => Array
(
[start_date_orignal] => 2016-06-17
[totaldistance] => 29.8
[totalorder] => 1
)
[7] => Array
(
[start_date_orignal] => 2016-06-18
[totaldistance] => 1
[totalorder] => 1
)
[8] => Array
(
[start_date_orignal] => 2016-06-18
[totaldistance] => 1
[totalorder] => 2
)
[9] => Array
(
[start_date_orignal] => 2016-06-18
[totaldistance] => 1
[totalorder] => 3
)
[10] => Array
(
[start_date_orignal] => 2016-06-18
[totaldistance] => 1
[totalorder] => 4
)
[11] => Array
(
[start_date_orignal] => 2016-06-18
[totaldistance] => 1.1
[totalorder] => 5
)
)
所以我有一个结束和开始日期以及一个包含查询数据的数组数据。正如你可以看到我的输出我得到 start_date_orignal作为关键和他的价值2016-05-23 。我得到这个值5次,所以我希望当相同的日期已经存在时,它将更新该特定日期的totalorder和totalcount。所以任何人都可以帮助我
答案 0 :(得分:0)
正如评论中所指出的:您可能希望在查询中包含此内容。既然你没有发布你的SQL我就不得不猜测,但它看起来像这样:
SELECT
start_date_original, SUM(totaldistance) as totaldistance, SUM(totalorder) as totalorder
FROM `table`
GROUP BY start_date_original
看看GROUP BY
:
GROUP BY语句与聚合一起使用 函数用于将结果集分组为一列或多列。
但是如果你真的想在php循环中这样做,我会建议这样的事情:
<?php
function cmp( $a, $b ) {
if ( $a['start_date_original'] == $b['start_date_original'] ) {
return 0;
}
return ( $a['date'] < $b['date'] ) ? - 1 : 1;
}
usort( $data, "cmp" );
for ( $i = 0; $i < count( $data ); $i ++ ) {
if ( $data[ $i ]['date'] !== $data[ $i + 1 ]['date'] ) {
continue; # No duplicate.
}
# We found a duplicate, so we'll add the current items to the next one. Then unset this one.
$data[ $i + 1 ]['totaldistance'] += $data[ $i ]['totaldistance'];
$data[ $i + 1 ]['totalorder'] += $data[ $i ]['totalorder'];
unset($data[$i]);
}
我们在这里做两件事:
您的数组可能已在日期对结果进行排序,如果是这种情况,您可以删除usort()
。
我仍然认为在你的查询中总结是一个更好的主意。