将不同的统计结果整合在一起,如图,根据年级统计出不同成绩段人数(此处只为举例),然后写了一个方法来处理这些统计数组

  1. <?php
  2.  
  3. /**
  4. * 合并统计数据
  5. * @param $key_column string 统计参照字段名
  6. * @param $_list_column array 统计内容字段 统计字段默认值0
  7. * @param mixed ...$_list_arr array 需合并统计内容
  8. * @return array
  9. */
  10. function statArrMergeHandle($key_column, $_list_column, ...$_list_arr)
  11. {
  12. //整理统计参照字段内容
  13. $_total_key = array();
  14. foreach ($_list_arr as $_arr) $_total_key = array_merge($_total_key, array_column($_arr, $key_column));
  15. $_total_key = array_unique($_total_key);
  16. sort($_total_key);
  17.  
  18. $_return_data = array();
  19.  
  20. //组合返回数组统计字段及内容,默认值0(根据情况自行设置默认值)
  21. $_modal_key = array();
  22. foreach ($_list_column as $_column) $_modal_key[$_column] = 0;
  23.  
  24. foreach ($_total_key as $key => $item) {
  25. $_arr_key = $_modal_key;
  26. $_arr_key[$key_column] = $item;
  27.  
  28. foreach ($_list_arr as $_arr) {//遍历需合并数据结果
  29. foreach ($_arr as $em) {
  30. if ($item == $em[$key_column]) {
  31. foreach ($_list_column as $_column) {
  32.  
  33. //统计结果大于0,更新相应统计字段数据(判断数组内容是否存在)
  34. if ($em[$_column] > 0) $_arr_key[$_column] = $em[$_column];
  35. }
  36. }
  37. }
  38. }
  39. $_return_data[$key] = $_arr_key;
  40. unset($_arr_key);
  41. }
  42.  
  43. return $_return_data;
  44. }
  45.  
  46. $score_a = array(
  47. array('grade' => '一年级', 'sum_a' => 20),
  48. array('grade' => '二年级', 'sum_a' => 21),
  49. array('grade' => '三年级', 'sum_a' => 15),
  50. array('grade' => '四年级', 'sum_a' => 3),
  51. array('grade' => '五年级', 'sum_a' => 14)
  52. );
  53.  
  54. $score_b = array(
  55. array('grade' => '一年级', 'sum_b' => 21),
  56. array('grade' => '二年级', 'sum_b' => 14),
  57. array('grade' => '四年级', 'sum_b' => 40),
  58. array('grade' => '五年级', 'sum_b' => 12),
  59. array('grade' => '六年级', 'sum_b' => 25),
  60. );
  61.  
  62. $score_c = array(
  63. array('grade' => '一年级', 'sum_c' => 45),
  64. array('grade' => '三年级', 'sum_c' => 24),
  65. array('grade' => '四年级', 'sum_c' => 5),
  66. array('grade' => '六年级', 'sum_c' => 12)
  67. );
  68.  
  69. $score_d = array(
  70. array('grade' => '一年级', 'sum_d' => 12),
  71. array('grade' => '二年级', 'sum_d' => 45),
  72. array('grade' => '六年级', 'sum_d' => 12)
  73. );
  74.  
  75. $_last_data = statArrMergeHandle('grade', array('sum_a', 'sum_b', 'sum_c', 'sum_d'), $score_a, $score_b, $score_c, $score_d);

最终结果

PHP 统计数据合并的更多相关文章

  1. [Linux-脚本]排序、统计、合并命令

    1.排序命令 - sort: sort可以帮我们进行排序,排序顺序按照LANG(语系环境变量)确定.据观察,sort排序以行为单位进行.排序以第一个不相同的字符决定先后顺序(只与第一个不相同的字符相关 ...

  2. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...

  3. python 数据合并

    1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...

  4. MSSQL·将一对多的数据合并为以指定分隔符的数据

    阅文时长 | 0.05分钟 字数统计 | 142.4字符 主要内容 | 1.引言&背景 2.Stuff函数语法&模拟场景 3.声明与参考资料 『MSSQL·将一对多的数据合并为以指定分 ...

  5. sql不重复的查找统计数据(经典)

    例表如下: 表名:MYTEST TID    COL1    COL2     COL3 1           1           A            A2           1     ...

  6. 使用Notepad++将多行数据合并成一行

    1.按Ctrl+F,弹出“替换”的窗口: 2.选择“替换”菜单: 3.“查找目标”内容输入为:\r\n: 4.“替换为”内容为空: 5.“查找模式”选择为正则表达式: 6.设置好之后,点击“全部替换” ...

  7. (转载)MySQL 统计数据行数 Select Count

    (转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. ...

  8. mysql按月,按日分组统计数据

    group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...

  9. R语言数据合并使用merge数据追加使用rbind和cbind

    R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...

随机推荐

  1. python---堡垒机开发

    一:堡垒机需求分析 注意: 虽然我们在中间使用防火墙服务器对流量进行拦截和转发也可以起到过滤作用,但是我们无法去获取到完整,正确的操作记录.因为无论是客户端还是服务器端(管理员可能会去修改记录,而且可 ...

  2. Bittersweet——NOIP2018 游记

    p { font-size: 16px; line-height: 1.5em; } blockquote { font-family: 'Times New Roman', 楷体; text-ali ...

  3. 使用subprocess.Poen注意事项

    学习使用python已经有四个月了,subprocess这个执行linux中shell命令的函数已经用过无数次了,踩到的坑也有几个,写出来分享一下,欢迎大家拍砖头. 1.shell命令中若有管道,一定 ...

  4. bootstrap使用记录

    http://v3.bootcss.com/components/#panels http://v2.bootcss.com/components.html

  5. 腾讯高级设计师谈微信的旧容与新妆,Android Design是大势所趋

    编者按:本篇投稿选自腾讯大讲堂(更多腾讯产品技术文章,可以关注“腾讯大讲堂”微信公众账号),由腾讯研发管理部高级设计师Vertu撰写,他以产品设计师的视角,对比解读了微信的旧容与新妆,也讲了Andro ...

  6. java后台调用http请求

    1:代码   @Value("${sms.username}")  可以将sms.properties配置文件中的值注入到username //这种方式是将sms.properti ...

  7. python最大最小距离算法贴近度评价法

    1.大最小贴近度评价法 概念: 贴近度表示两个模糊几何之间的彼此接近程度,在模糊模式识别方法中采用贴近度的大小识别待判别模糊子集的模式类别.为衡量待识别子集的类别,需要判别各个阶段与标杆模糊集合之间的 ...

  8. tomcat集群及session共享

    一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其b ...

  9. [转]ROS(Robot Operating System)常用环境变量介绍

    本文简单介绍ROS系统中常用的环境变量用途及设置方式.ROS系统环境中除了必须配置的环境变量以外,其他的也是十分有用,通过修改变量路径,可以设置ROS系统中log文件存放路径,单元测试结果存放路径等. ...

  10. Django中六个常用的自定义装饰器

    装饰器作用 decorator是当今最流行的设计模式之一,很多使用它的人并不知道它是一种设计模式.这种模式有什么特别之处? 有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为, ...