前两天做店铺收入的统计,一个数据表是按天进行统计的,另一个是按订单进行统计的,但是我统计数据时需要进行数据组合,组合过程中发现两则的日期有相同的有不相同的很不好处理:
类似这样的两个数组
$arr1=array( '0'=>array( 'month'=>'2017-09', 'num'=>'10', 'price'=>'0.02' ), '1'=>array( 'month'=>'2017-08', 'num'=>'2', 'price'=>'10.02' ), '2'=>array( 'month'=>'2017-07', 'num'=>'3', 'price'=>'0.11' ), '3'=>array( 'month'=>'2016-05', 'num'=>'3', 'price'=>'0.7' ), ); $arr2=array( '0'=>array( 'month'=>'2017-08', 'num'=>'7', 'price'=>'0.21' ), '1'=>array( 'month'=>'2017-07', 'num'=>'6', 'price'=>'12' ), '2'=>array( 'month'=>'2017-04', 'num'=>'5', 'price'=>'1.17' ), '3'=>array( 'month'=>'2016-12', 'num'=>'5', 'price'=>'0.88' ), );
在网上找资料找到一些类似的然后自己修改了下,如下:
//将数组合并,并且month相同的num相加 $item = array(); $item = array_merge($arr1, $arr2); //echo ""; //print_r($item);exit;$arr = array(); for ($i = 0; $i < count($item); $i++) { $a = $item[$i]; foreach ($item as $key => $value) { if ($key == $i) { continue; } else { if ($a['month'] == $value['month']) { $a['num'] = $a['num'] + $value['num']; $a['price'] = $a['price'] + $value['price']; } } } $arr[] = $a; } //对数组进行处理 function array_unique_fb($array2D){ foreach ($array2D as $v) { $v = join(',', $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 $temp=array_values($temp);//将键值重新排序 foreach ($temp as $k => $v) { $temp = explode(',', $v); //再将拆开的数组重新组装 //索引排序 $temp2[$k]['month'] =$temp[0]; $temp2[$k]['num'] =$temp[1]; $temp2[$k]['price'] =$temp[2]; } return $temp2; } //这时得到一个没有按日期排序的新二维数组 $arr3 = array_unique_fb($arr); $leng=count($arr3); //将数组按日期进行倒序排列 for ($i=1; $i <$leng ; $i++) { for ($k=0; $k <$leng-$i ; $k++) { //if($arr3[$k]['month']<$arr3[$k+1]['month']){发现也行得通 if(strtotime($arr3[$k]['month'])<strtotime($arr3[$k+1]['month'])){ $aw=$arr3[$k]; $arr3[$k]=$arr3[$k+1]; $arr3[$k+1]=$aw; } } }
打印结果:
array(6) { [0]=> array(3) { ["month"]=> string(7) "2017-09" ["num"]=> string(2) "10" ["price"]=> string(4) "0.02" } [1]=> array(3) { ["month"]=> string(7) "2017-08" ["num"]=> string(1) "9" ["price"]=> string(5) "10.23" } [2]=> array(3) { ["month"]=> string(7) "2017-07" ["num"]=> string(1) "9" ["price"]=> string(5) "12.11" } [3]=> array(3) { ["month"]=> string(7) "2017-04" ["num"]=> string(1) "5" ["price"]=> string(4) "1.17" } [4]=> array(3) { ["month"]=> string(7) "2016-12" ["num"]=> string(1) "5" ["price"]=> string(4) "0.88" } [5]=> array(3) { ["month"]=> string(7) "2016-05" ["num"]=> string(1) "3" ["price"]=> string(3) "0.7" } }