算法积累之处理数组数据

简介:

原数据

复制代码
Array
(
    [0] => Array
        (
            [award_cat] => 1
            [award_level] => 1
            [count] => 5
        )

    [1] => Array
        (
            [award_cat] => 2
            [award_level] => 1
            [count] => 11
        )

    [2] => Array
        (
            [award_cat] => 2
            [award_level] => 2
            [count] => 6
        )

    [3] => Array
        (
            [award_cat] => 2
            [award_level] => 3
            [count] => 7
        )

    [4] => Array
        (
            [award_cat] => 2
            [award_level] => 4
            [count] => 10
        )

    [5] => Array
        (
            [award_cat] => 2
            [award_level] => 5
            [count] => 10
        )

    [6] => Array
        (
            [award_cat] => 2
            [award_level] => 6
            [count] => 9
        )

    [7] => Array
        (
            [award_cat] => 2
            [award_level] => 7
            [count] => 7
        )

    [8] => Array
        (
            [award_cat] => 3
            [award_level] => 2
            [count] => 5
        )

    [9] => Array
        (
            [award_cat] => 4
            [award_level] => 3
            [count] => 5
        )

    [10] => Array
        (
            [award_cat] => 5
            [award_level] => 4
            [count] => 4
        )

    [11] => Array
        (
            [award_cat] => 6
            [award_level] => 6
            [count] => 6
        )

)
复制代码

目标数据

$outData = array(0=>array('name'=>'论文','data'=>'1,2,3,4,5,6,7'),1=>array('name'=>'优质课','data'=>'3,4,6,9,4,8,10'));

 

思路:

先对原数据进行一次简单处理,

foreach ($aAwardMem as $k => $v) {
            $a[$v['award_cat']][$v['award_level']]=$v;
        }

处理之后为,

复制代码
[1] => Array
        (
            [1] => Array
                (
                    [award_cat] => 1
                    [award_level] => 1
                    [count] => 5
                )

        )

    [2] => Array
        (
            [1] => Array
                (
                    [award_cat] => 2
                    [award_level] => 1
                    [count] => 11
                )

            [2] => Array
                (
                    [award_cat] => 2
                    [award_level] => 2
                    [count] => 6
                )

            [3] => Array
                (
                    [award_cat] => 2
                    [award_level] => 3
                    [count] => 7
                )

            [4] => Array
                (
                    [award_cat] => 2
                    [award_level] => 4
                    [count] => 10
                )

            [5] => Array
                (
                    [award_cat] => 2
                    [award_level] => 5
                    [count] => 10
                )

            [6] => Array
                (
                    [award_cat] => 2
                    [award_level] => 6
                    [count] => 9
                )

            [7] => Array
                (
                    [award_cat] => 2
                    [award_level] => 7
                    [count] => 7
                )

        )

    [3] => Array
        (
            [2] => Array
                (
                    [award_cat] => 3
                    [award_level] => 2
                    [count] => 5
                )

        )

    [4] => Array
        (
            [3] => Array
                (
                    [award_cat] => 4
                    [award_level] => 3
                    [count] => 5
                )

        )

    [5] => Array
        (
            [4] => Array
                (
                    [award_cat] => 5
                    [award_level] => 4
                    [count] => 4
                )

        )

    [6] => Array
        (
            [6] => Array
                (
                    [award_cat] => 6
                    [award_level] => 6
                    [count] => 6
                )

        )
复制代码

这样key值就有意义了。

第一个key表示award_cat

第二个表示award_level

 

然后再对数据,进行字符串处理。

复制代码
foreach ($researchAwardCat as $i => $ival) {//论文
            $outData[$i-1]['name'] = $ival;
            $outstr = '';
            $count = 0;
            foreach ($researchAwardLevel as $j => $jval) {//国际、国家
                if($count!=0){
                    $outstr.=',';
                }
                if(isset($a[$i][$j])){
                        $outstr .=$a[$i][$j]['count'];
                }else{
                        $outstr .='0';
                }
                $count++;
            }
            $outData[$i-1]['data'] = $outstr;
        }
复制代码

这样就达到最终数据模型了。

复制代码
Array
(
    [0] => Array
        (
            [name] => 论文
            [data] => 5,0,0,0,0,0,0
        )

    [1] => Array
        (
            [name] => 优质课
            [data] => 11,6,7,10,10,9,7
        )

    [2] => Array
        (
            [name] => 课件
            [data] => 0,5,0,0,0,0,0
        )

    [3] => Array
        (
            [name] => 教学设计
            [data] => 0,0,5,0,0,0,0
        )

    [4] => Array
        (
            [name] => 基本功赛
            [data] => 0,0,0,4,0,0,0
        )

    [5] => Array
        (
            [name] => 带生获奖
            [data] => 0,0,0,0,0,6,0
        )

)
复制代码

就能看到统计图了,yeah

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3796920.html,如需转载请自行联系原作者


相关文章
|
6月前
|
存储 算法 安全
【Java编程进阶之路 02】深入探索:红黑树如何重塑哈希表的性能边界
JDK 1.8之后,HashMap引入红黑树来优化性能,当链表长度超过阈值(默认为8)时,链表会转换为红黑树,从而提高高冲突时的查询效率。同时,HashMap也采用了扰动函数来增加哈希值的随机性,使键值对更均匀分布,提升性能。
76 0
|
存储 移动开发 算法
攻克数据结构和算法——第六天:排序
若关键字是主关键字(关键字值不重复),这无论采用何种排序方法,排出的结果都是唯一的;若关键字是次关键字(关键字值可以重复),则排出的结果可能不唯一。
179 0
攻克数据结构和算法——第六天:排序
|
算法 搜索推荐
数组中涉及到的常见算法
数组中涉及到的常见算法
76 0
|
算法 搜索推荐
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
196 0
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(上)
本文主要介绍了堆和比较器:堆包括大根堆和小根堆;比较器的实质就是重载比较运算符,可以用于普通方式的排序和自定义的排序。
算法与数据结构全阶班-左程云版(二)基础阶段之4.堆和比较器(上)
|
Go 开发者
数组的使用价值|学习笔记
快速学习数组的使用价值。
130 0
数组的使用价值|学习笔记
|
存储 人工智能 算法
算法系统学习-正的麻烦反着来呗!(迭代算法-倒推法)
该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点
180 0
|
前端开发
前端学习案例-稀疏数组的遍历问题的研究
前端学习案例-稀疏数组的遍历问题的研究
84 0
|
机器学习/深度学习 算法 Java
面经手册 · 第3篇《HashMap核心知识,扰动函数、负载因子、扩容链表拆分深度学习(+实践验证)》
HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。另外,需要注意的是,HashMap 是非线程安全类,在多线程环境下可能会存在问题。
183 0
面经手册 · 第3篇《HashMap核心知识,扰动函数、负载因子、扩容链表拆分深度学习(+实践验证)》
下一篇
无影云桌面