补全数组缺失某种类型的数据方法

当前用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

原文地址:https://www.cnblogs.com/cuculus/p/9293645.html

时间: 2024-07-28 17:14:52

补全数组缺失某种类型的数据方法的相关文章

安卓代码自动补全及代码自动提示的设置方法

设置代码提示 1.左上角点击File选项,找到Settings 2.点击Settings后,找到Editor 3.点击Editor后,找到General,点击General,找到Code  Completion 从图中我们可以看到Case sensitive completion 里面有三个选择项None,All,First letter All:选择这个的话,意思就是要和你输入的字符进行全匹配,能全匹配起来的字符才会显示在提示列表中,如下图,其实就相当于精确搜索: None:选择这项的话,意思

Input自动补全,并且将输入的数据存放到本地

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head lang="en"> <meta charset="UTF-8"> <script src="jquery.js"></script&g

用solr自动补全

自动补全已经变成了每一个应用程序基础部分特性.构建一个快速的,可扩展的自动补全对一个一直在增长数据的程序来说是个相当大的工程.我见过的其中最好的自动补全是Quora的搜索自动补全.我知道google和youtube也有最好的,但是我只想聚焦于小公司而不是巨头.这是一篇在Quora's autocomplete上解释的他们如何用C++设计构建的自动补全. 在这篇文章中,我们将使用solr搜索殷勤提供一个像样的自动补全.Solr像一个文档数据库一样工作,在这个数据库中,一条记录就是一个文档.在Sol

Visual Studio Code使用typings拓展自动补全功能

转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.com/Docs/runtimes/nodejs#_intellisense-and-typings gyzhao写的”Visual Studio Code 使用 Typings 实现智能提示功能”: http://www.cnblogs.com/IPrograming/p/VsCodeTypings

IDEA如何自动提示并补全syso和main呢?

myeclipse使用若干年了,syso和main也被打过无数遍,切换到IDEA开发工具中,一按,天啦,竟然没有自动补全,顿时觉得IDEA弱爆了,经过摸索之后,IDEA终结没有令人失望.可以通过配置Live Templates实现. 配置过程如下: 1.打开IDEA的File-project settings--liveTemplates 2.点击右边的加号,先创建一个模板的分组,命名为JAVA 3.然后在JAVA分组下分别创建main和syso的自动补全,切记选择Changes被应用到哪些文件

权限管理2 以及bash的特性 快捷键,补全功能以及变量的类型,登录类型,脚本

权限管理: owner          group         other 属主              属组            其它 权限:read   write     execute r           w            x 文件: -r:可以使用文件查看类的命令来显示相关内容 -w:可以使用编辑器修改内容 -x:可以将其发起一个进程 目录: -r:可以使用ls命令查看目录内容的的文件信息 -w:可以创建 删除文件 -x:可以使用ls -l命令查看内容的文件信息,

elasticsearch补全功能之只补全筛选后的部分数据context suggester

官方文档https://www.elastic.co/guide/en/elasticsearch/reference/5.0/suggester-context.html 下面所有演示基于elasticsearch5.x和Python3.x 最近项目使用elasticsearch的补全功能时,需要对于所有文章(article)的作者名字(author)的搜索做补全,文章的mapping大致如下 ARTICLE = { 'properties': { 'id': { 'type': 'integ

pandas 对数据帧DataFrame中数据的增删、补全及转换操作

1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['row_0', 'row_1', 'row_2'], columns=['col_0', 'col_1', 'col_2']) 2.增加行.列 数据帧DataFrame的每一行都可看作是一个对象,每一列都是该对象的不同属性.每行都具有多维度的属性,因此每行都可以看作是一个小的DataFrame:而每列

关于SpringMVC中如何把查询数据全转成String类型

之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个月很好用,查询出来的数据直接从页面复制下来贴到Excel做月报表,就这样一年过去了,最近做三期,发现运维人员月底几天特别的忙,数据逾百万(汗),SQL查询语句都要写n多分页.... 伙伴们如此幸苦,还是我来拯救他们吧- 我的解决思路大致如下: A>界面增加查询倒出Excel表按钮(不需要分页,也不需