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

<?php /**
* 合并统计数据
* @param $key_column string 统计参照字段名
* @param $_list_column array 统计内容字段 统计字段默认值0
* @param mixed ...$_list_arr array 需合并统计内容
* @return array
*/
function statArrMergeHandle($key_column, $_list_column, ...$_list_arr)
{
//整理统计参照字段内容
$_total_key = array();
foreach ($_list_arr as $_arr) $_total_key = array_merge($_total_key, array_column($_arr, $key_column));
$_total_key = array_unique($_total_key);
sort($_total_key); $_return_data = array(); //组合返回数组统计字段及内容,默认值0(根据情况自行设置默认值)
$_modal_key = array();
foreach ($_list_column as $_column) $_modal_key[$_column] = 0; foreach ($_total_key as $key => $item) {
$_arr_key = $_modal_key;
$_arr_key[$key_column] = $item; foreach ($_list_arr as $_arr) {//遍历需合并数据结果
foreach ($_arr as $em) {
if ($item == $em[$key_column]) {
foreach ($_list_column as $_column) { //统计结果大于0,更新相应统计字段数据(判断数组内容是否存在)
if ($em[$_column] > 0) $_arr_key[$_column] = $em[$_column];
}
}
}
}
$_return_data[$key] = $_arr_key;
unset($_arr_key);
} return $_return_data;
} $score_a = array(
array('grade' => '一年级', 'sum_a' => 20),
array('grade' => '二年级', 'sum_a' => 21),
array('grade' => '三年级', 'sum_a' => 15),
array('grade' => '四年级', 'sum_a' => 3),
array('grade' => '五年级', 'sum_a' => 14)
); $score_b = array(
array('grade' => '一年级', 'sum_b' => 21),
array('grade' => '二年级', 'sum_b' => 14),
array('grade' => '四年级', 'sum_b' => 40),
array('grade' => '五年级', 'sum_b' => 12),
array('grade' => '六年级', 'sum_b' => 25),
); $score_c = array(
array('grade' => '一年级', 'sum_c' => 45),
array('grade' => '三年级', 'sum_c' => 24),
array('grade' => '四年级', 'sum_c' => 5),
array('grade' => '六年级', 'sum_c' => 12)
); $score_d = array(
array('grade' => '一年级', 'sum_d' => 12),
array('grade' => '二年级', 'sum_d' => 45),
array('grade' => '六年级', 'sum_d' => 12)
); $_last_data = statArrMergeHandle('grade', array('sum_a', 'sum_b', 'sum_c', 'sum_d'), $score_a, $score_b, $score_c, $score_d);
最终结果

PHP 统计数据合并的更多相关文章
- [Linux-脚本]排序、统计、合并命令
1.排序命令 - sort: sort可以帮我们进行排序,排序顺序按照LANG(语系环境变量)确定.据观察,sort排序以行为单位进行.排序以第一个不相同的字符决定先后顺序(只与第一个不相同的字符相关 ...
- pandas学习(数据分组与分组运算、离散化处理、数据合并)
pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...
- python 数据合并
1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...
- MSSQL·将一对多的数据合并为以指定分隔符的数据
阅文时长 | 0.05分钟 字数统计 | 142.4字符 主要内容 | 1.引言&背景 2.Stuff函数语法&模拟场景 3.声明与参考资料 『MSSQL·将一对多的数据合并为以指定分 ...
- sql不重复的查找统计数据(经典)
例表如下: 表名:MYTEST TID COL1 COL2 COL3 1 1 A A2 1 ...
- 使用Notepad++将多行数据合并成一行
1.按Ctrl+F,弹出“替换”的窗口: 2.选择“替换”菜单: 3.“查找目标”内容输入为:\r\n: 4.“替换为”内容为空: 5.“查找模式”选择为正则表达式: 6.设置好之后,点击“全部替换” ...
- (转载)MySQL 统计数据行数 Select Count
(转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. ...
- mysql按月,按日分组统计数据
group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...
- R语言数据合并使用merge数据追加使用rbind和cbind
R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...
随机推荐
- 转:苹果Xcode帮助文档阅读指南
一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用.从论坛.微博等等地方看到的初学者提出的问题,也暴露出 ...
- 通过TodoList案例对比Vue.js的MVVM设计模式与JQuery的MVP设计模式
Vue MVVM设计模式: 在使用vue进行编程时,不会再涉及到DOM的操作,取而代之的是修改数据层,当把数据进行变更的时候,vue之中它的底层会自动的根据数据的不同帮助我们去重新渲染页面. 编码时不 ...
- Vue 嵌套数组 数组更新视图不更新
关于Vue的响应式原理,可以看官方文档或其他资料, https://www.jianshu.com/p/34de360d6035 data里定义了一个数组arr,数组的元素可以是同样格式的数组arrC ...
- 2017 清北济南考前刷题Day 7 morning
期望得分:100+50+20=170 实际得分:10+50+20=80 1. 纸牌 题目描述 在桌面上放着n张纸牌,每张纸牌有两面,每面都写着一个非负整数.你的邪王真眼可以看到所有牌朝上的一面和朝下的 ...
- 苏宁OLAP架构设计
一. 功能综述 OLAP引擎为存储和计算二合一的引擎,自身内部涵盖了对数据的管理以及提供查询能力.底层数据完全规划在引擎内部,外部系统不允许直接操作底层数据,而是需要通过暴露出来的接口来读写引擎内部数 ...
- Enumeration和Iterator
首先,Enumeration已经被Iterator取代了..... Enumeration是个接口,不是类,使用时需要具体的实现类. 里面只定义了两个方法: hasMoreElements()和nex ...
- MI-NOTE黑砖
机型:MI NOTE LTE miui7刷机老是报错,remote:partition table doesn't exist,分区表不存在,于是使用磁盘模式,也看到警告不要中途拔下来,但是不知道是 ...
- 20155321 2016-2017-2 《Java程序设计》第六周学习总结
20155321 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 IO 流 IO 流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...
- python实现梯度下降法
# coding:utf-8 import numpy as np import matplotlib.pyplot as plt x = np.arange(-5/2,5/2,0.01) y = - ...
- python基础——python解析yaml类型文件
一.yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言).采用yaml作为配置文件,文件看起来直观.简洁.方便理解.yaml文件可以解析字典.列表和一些基 ...