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

 <?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. 洛谷P1456 Monkey King

    https://www.luogu.org/problemnew/show/1456 #include<cstdio> #include<iostream> #include& ...

  2. bzoj千题计划151:bzoj1131: [POI2008]Sta

    http://www.lydsy.com/JudgeOnline/problem.php?id=1131 dp[i]=dp[fa[i]]-son[i]+n-son[i] #include<cst ...

  3. 关于File 文件操作

    1.通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据2.通过Cont ...

  4. MapReduce (hive表SequenceFile的结果做输入)、MultipleOutputs和Reduce端迭代iterable的一些说明

    很长时间以来一直写hive,嵌套脚本.偶尔写UDF.  最近用Hive的dynamic partition和多路插入做一些事情,很遗憾的结果是非常不稳定,有时能成功,有时失败.(可能是因为hive版本 ...

  5. Spring Data JPA原生SQL查询

    package com.test.cms.dao.repository;import org.springframework.stereotype.Repository;import javax.pe ...

  6. C#(.net)水印图片的生成

    /* * *    使用说明: * 建议先定义一个WaterImage实例 * 然后利用实例的属性,去匹配需要进行操作的参数 * 然后定义一个WaterImageManage实例 * 利用WaterI ...

  7. 1.phpcms的安装和卸载文件

    一.安装文件 ①languages文件夹 语言包:zh-cn\order.lang.php //样式<?php $LANG['order_new'] = '订单管理'; ?> ②templ ...

  8. C语言实现线性表

    #include <stdio.h> #include <stdlib.h> //提供malloc()原型 /* 线性表需要的方法: 1. List MakeEmpty():初 ...

  9. 汇编与C语句

    ---恢复内容开始--- 汇编与C语句 4.1C语句与汇编 学习了汇编语言之后,就需要将常用的C语言代码结构与相应的汇编语言联系起来.这样就可以在分析汇编语言的时候,明白它的意思.C语言中函数过程的调 ...

  10. sql server中的日期函数

    DATEADD   在向指定日期加上一段时间的基础上,返回新的 datetime 值. 语法           DATEADD ( datepart , number, date ) 参数 (1) ...