zoukankan      html  css  js  c++  java
  • 多个二维数组根据相等字段合并到新数组,不等的也增加到新数组

    就如标题介绍的,如果我们有五个二维数组,但是字段又不相同,只有一个相同的sid,根据sid,把字段赋值到一个新的表里,如果没有相等,就向下加一个下标赋值过去,不多说,看代码:

    1.先把五个二维数组合并

    $data= array_merge($list,$list1,$list2,$list3,$list4);

    得到一个新的二维数组:

    $data[0]['clothing']='3';
            $data[0]['sid']='402';
            $data[0]['after_type']='3';
            $data[0]['order_type']='3';
            $data[0]['bid']='104';
            $data[0]['did']='16';
    
            $data[1]['clothing']='56';
            $data[1]['sid']='403';
            $data[1]['after_type']='3';
            $data[1]['order_type']='3';
            $data[1]['bid']='105';
            $data[1]['did']='15';
    
            $data[2]['functional_finishing']='567';
            $data[2]['sid']='402';
            $data[2]['after_type']='3';
            $data[2]['order_type']='3';
            $data[2]['bid']='104';
            $data[2]['did']='16';
    
            $data[3]['functional_finishing']='78';
            $data[3]['sid']='403';
            $data[3]['after_type']='3';
            $data[3]['order_type']='3';
            $data[3]['bid']='104';
            $data[3]['did']='16';
    
            $data[4]['functional_finishing']='89';
            $data[4]['sid']='123';
            $data[4]['after_type']='3';
            $data[4]['order_type']='3';
            $data[4]['bid']='104';
            $data[4]['did']='16';
    
            $data[5]['clothing_function']='78';
            $data[5]['sid']='402';
            $data[5]['after_type']='3';
            $data[5]['order_type']='3';
            $data[5]['bid']='104';
            $data[5]['did']='16';

    可以看到,里面的字段并不是相同的,我们要根据sid操作

      $newdata = [];
            foreach($data as $k=>$v){
                if(!isset($newdata[$v['sid']])){//不等就完全赋值过去
                    $newdata[$v['sid']][] = $v;
                }else{//相等就把不同的字段赋值过去$newdata[$v['sid']][0]['garment'] += $v['garment'];
                    $newdata[$v['sid']][0]['garment_function'] += $v['garment_function'];
                    $newdata[$v['sid']][0]['clothing'] += $v['clothing'];
                    $newdata[$v['sid']][0]['functional_finishing'] += $v['functional_finishing'];
                    $newdata[$v['sid']][0]['clothing_function'] += $v['clothing_function'];
                }
            }

    然后的到一个三维数组

    array(3) {
      [402] => array(1) {
        [0] => array(10) {
          ["clothing"] => int(3)
          ["sid"] => string(3) "402"
          ["after_type"] => string(1) "3"
          ["order_type"] => string(1) "3"
          ["bid"] => string(3) "104"
          ["did"] => string(2) "16"
          ["garment"] => int(0)
          ["garment_function"] => int(0)
          ["functional_finishing"] => int(567)
          ["clothing_function"] => int(78)
        }
      }
      [403] => array(1) {
        [0] => array(10) {
          ["clothing"] => int(56)
          ["sid"] => string(3) "403"
          ["after_type"] => string(1) "3"
          ["order_type"] => string(1) "3"
          ["bid"] => string(3) "105"
          ["did"] => string(2) "15"
          ["garment"] => int(0)
          ["garment_function"] => int(0)
          ["functional_finishing"] => int(78)
          ["clothing_function"] => int(0)
        }
      }
      [123] => array(1) {
        [0] => array(6) {
          ["functional_finishing"] => string(2) "89"
          ["sid"] => string(3) "123"
          ["after_type"] => string(1) "3"
          ["order_type"] => string(1) "3"
          ["bid"] => string(3) "104"
          ["did"] => string(2) "16"
        }
      }
    }

    不急,我们转换为二维数组

    $new_arr=[];
    foreach ($newdata as $k=>$v){ $new_arr[]=$v[0]; }

    好了,这就是多个二维数组依据条件赋值的操作,如果你也有闭着更好的办法,欢迎留言,不懂得地方也可以留言额

    人生得意须尽欢,莫使金樽空对月.
  • 相关阅读:
    python之read()方法
    python之高阶函数
    python之lambda表达式的应用
    DevExpress.XtraGrid.view.gridview 说明文
    C# SQL时间格式
    GridControl自动定位至符合条件的行
    用sql命令修改数据表
    用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
    DevExpress中GridControl的属性设置及动态绑定数据和全选取消全选
    C# 导出数据到Excel模板中
  • 原文地址:https://www.cnblogs.com/luojie-/p/11765932.html
Copyright © 2011-2022 走看看