• 两个二维数组组合并且日期相同的其他值相加


    前两天做店铺收入的统计,一个数据表是按天进行统计的,另一个是按订单进行统计的,但是我统计数据时需要进行数据组合,组合过程中发现两则的日期有相同的有不相同的很不好处理:

    类似这样的两个数组

    $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 "<pre>";
    //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"
      }
    }
    不断的修改不断的完善
  • 相关阅读:
    微信小程序开发之选项卡
    sublime text3安装cssrem 插件步骤
    我的第二个Vue项目
    node下载指定版本
    我的第一个vue项目构建
    js实现二级月日联动菜单
    webStrom设置打开默认浏览器
    html-webpack-plugin Configuration配置信息
    webpack html-webpack-plugin 遍历
    git使用笔记
  • 原文地址:https://www.cnblogs.com/lhwhqy/p/7727499.html
Copyright © 2020-2023  润新知