算法积累之处理数组数据

简介:

原数据

复制代码
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,如需转载请自行联系原作者


相关文章
|
5月前
|
数据可视化 数据挖掘 Python
揭秘数据排序的神秘面纱:如何用DataFrame排序和排名洞悉数据背后的秘密?
【8月更文挑战第22天】DataFrame排序和排名是数据分析的关键步骤,尤其在使用Python的Pandas库处理表格数据时尤为重要。通过对DataFrame使用`sort_values()`方法可实现基于一列或多列的灵活排序,而`rank()`方法则能轻松完成数据排名。例如,对学生信息DataFrame按分数排序及排名,或先按年龄排序再按分数排名,均可快速洞察数据模式与异常值,适用于金融分析和教育研究等多个领域。掌握这些技术有助于提高数据分析效率并深入理解数据。
59 1
|
8月前
|
存储 算法 安全
【Java编程进阶之路 02】深入探索:红黑树如何重塑哈希表的性能边界
JDK 1.8之后,HashMap引入红黑树来优化性能,当链表长度超过阈值(默认为8)时,链表会转换为红黑树,从而提高高冲突时的查询效率。同时,HashMap也采用了扰动函数来增加哈希值的随机性,使键值对更均匀分布,提升性能。
89 0
|
算法 搜索推荐
数组中涉及到的常见算法
数组中涉及到的常见算法
83 0
|
存储 SQL 分布式计算
HashTable 在蚂蚁转化归因中的极致运用
本文主要讲述hash cluster表的一些运用。
11345 0
|
算法 搜索推荐
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
202 0
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
|
算法 BI
攻克数据结构和算法——第三天:串
一般来说,计算机硬件结构反映处理数值计算需要,而计算机上非数值处理的对象,大多就是字符串数据
125 0
攻克数据结构和算法——第三天:串
|
存储 算法 索引
攻克数据结构和算法——第五天:查找
查找过程中,往往是依据数据元素的某个数据项进行查找,这个数据项通常是数据的关键字。关键字:是数据元素中某个数据项的值,用以标识一个数据元素。
112 0
攻克数据结构和算法——第五天:查找
算法竞赛之查找算法(持续补充...)
算法竞赛之查找算法(持续补充...)
|
机器学习/深度学习 算法 测试技术
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(下)
本文主要介绍了数据结构与算法的基本概念,包括算法评价指标、复杂度、对数器、二分法和异或运算。
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(下)
|
算法 搜索推荐
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)
本文主要介绍了数据结构与算法的基本概念,包括算法评价指标、复杂度、对数器、二分法和异或运算。
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)