zoukankan      html  css  js  c++  java
  • 补全数组缺失某种类型的数据方法

    当前用echart做数据统计时,遇到这样的场景:

    查询user_type=2时,没有type=1的数据,页面图表显示时缺失数据会有不必要的麻烦,于是写了个填充数据的方法,代码如下:

     1 /*补全数组没有的类型
     2 * $arr1 = [['type'=>1,'num'=>0],['type'=>2,'num'=>0],['type'=>3,'num'=>0]];
     3 * $arr2 = [['type'=>2,'num'=>216,'user_type'=>2],['type'=>3,'num'=>82,'user_type'=>2]];
     4 * 将$arr2补全type=1的类型数据
     5 */
     6 function fillArr($arr1, $arr2, $field_arr)
     7 {
     8     if(!count($arr1) || !count($arr2)) return false;
     9     $new_arr = $arr1 + $arr2;
    10     if($new_arr == $arr2)
    11     {
    12         return $arr2;
    13     }
    14     else
    15     {
    16         foreach ($arr1 as &$v_arr1)
    17         {
    18             foreach ($arr2 as &$v_arr2)
    19             {
    20                 $v_arr1["$field_arr[0]"] = $v_arr2["$field_arr[0]"];
    21                 if ($v_arr2["$field_arr[1]"] == $v_arr1["$field_arr[1]"])
    22                 {
    23                     $v_arr1["$field_arr[2]"]  = $v_arr2["$field_arr[2]"];
    24                 }
    25             }
    26         }
    27         return $arr1;
    28     }
    29 
    30 }

    控制器调用方法如下:

    1 $album_arr = [['type'=>1,'num'=>0],['type'=>2,'num'=>0],['type'=>3,'num'=>0]];
    2 $album_curr_total_num_b = 查询出来的数据        
    5 $album_curr_total_num_c = 查询出来的数据
    6 
    7 $album_total_b = fillArr($album_arr, $album_curr_total_num_b, ['user_type', 'type', 'num']);
    8 $album_total_c = fillArr($album_arr, $album_curr_total_num_c, ['user_type', 'type', 'num']);

    处理的结果如下:

     1 array (size=3)
     2   0 => 
     3     array (size=3)
     4       'type' => int 1
     5       'num' => int 0
     6       'user_type' => string '2' (length=1)
     7   1 => 
     8     array (size=3)
     9       'type' => int 2
    10       'num' => string '216' (length=3)
    11       'user_type' => string '2' (length=1)
    12   2 => 
    13     array (size=3)
    14       'type' => int 3
    15       'num' => string '82' (length=2)
    16       'user_type' => string '2' (length=1)
    17 
    18 array (size=3)
    19   0 => 
    20     array (size=3)
    21       'type' => int 1
    22       'num' => string '15' (length=2)
    23       'user_type' => string '1' (length=1)
    24   1 => 
    25     array (size=3)
    26       'type' => int 2
    27       'num' => string '8' (length=1)
    28       'user_type' => string '1' (length=1)
    29   2 => 
    30     array (size=3)
    31       'type' => int 3
    32       'num' => string '1' (length=1)
    33       'user_type' => string '1' (length=1)

    此时 user_type=2的type为1的数据默认为0

  • 相关阅读:
    VSCode编辑器在开发时常用的插件
    表单的数据校验规则及使用记录
    Vuex的插件保持状态持久化
    VueCli3项目中模拟数据及配置代理转发
    CSS 模块化
    Vue中静态地址的使用方式
    Vue中自动化引入样式及组件样式穿透
    Vue中的全局混入或局部混入
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
    刚学玩原生JS,自己写了一个小游戏,希望在以后能不断地进步加以改善
  • 原文地址:https://www.cnblogs.com/cuculus/p/9293645.html
Copyright © 2011-2022 走看看