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

 <?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 统计数据合并的更多相关文章

  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. PHP里echo print print_r的区别

    echo ,print的区别在于echo 可以输出多个变量值,而print只有一个变量,做为一个字符串输出. 另一点区别在于echo 没有返回值,print有返回值1.print不能输出数组和对象. ...

  2. Jenkins配置定时任务

    在任务配置中,滚动到构建触发器-->勾选"Build periodically"-->在输入框中配置触发时间 以上配置,表示在6月13日23点触发. 如果配置成  00 ...

  3. [整理]C结构实现位段(bit field)

    #include <stdio.h> #include <string.h> typedef struct A{ int a:5; int b:3; unsigned c:8; ...

  4. 20155209 2016-2017-2 《Java程序设计》第五周学习总结

    20155209 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 try语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外. catch语句的参 ...

  5. 搭建zookeeper单机版以及简单命令的使用

    1:创建目录 #数据目录dataDir=/opt/hadoop/zookeeper-3.3.5-cdh3u5/data#日志目录dataLogDir=/opt/hadoop/zookeeper-3.3 ...

  6. opencv的基本数据结构(二)(转)

    转自:原文链接,以下代码.图片.内容有点改动,只为转载不降低博客内容的可阅性,版权归原作者所有. OpenCV中强大的Mat类型大家已经比较熟悉了.这里梳理一些在工程中其他经常用到的几种基本数据类型. ...

  7. Oracle GoldenGate常用参数

    OGG(Oracle GoldenGate)参数介绍 所有的GoldenGate进程均有参数文件 Manager Extract Replicat Utilities 所有参数均有缺省配置 实际应用只 ...

  8. python初步学习-练习题

    1.实现1-100的所有的和 #!/usr/bin/env python #encoding:utf8 '''实现1-100的所有的和 1. 使用列表解析获取0-100的列表 2. 使用reduce内 ...

  9. Python练习-一个简单的生成器

    今天我们学习了生成器,怎么理解生成器呢,其实就是使用函数的方式自己建立一个迭代器 # 编辑者:闫龙 #做一个简单的生成器 def EasyGene(*args): #建立一个生成器方法并传递多个参数 ...

  10. windows 批处理文件调用exe

    @echo offstart "" "C:\Users\Administrator\Desktop\testtaotao\Debug\testtaotao.exe&quo ...