背景:现在有一个多维数组,该数组里面的部分一维数组key值是完全一样的,现将一样的数组提取出来,用于做列表展示。

封装方法:

 function arrClassify($arr){
$data = array();
$a = 0;
while ($arr){
$key = $arr[0];
$data[$a]['query'] = '第'.$a.'类';
$data[$a]['head'] = array_keys($key);
$data[$a]['value'][] = $key;
unset($arr[0]);
$i = 1;
while($i <= count($arr)){
$result=array_diff_key($arr[$i],$key);
if(!$result){
$data[$a]['value'][] = $arr[$i];
unset($arr[$i]);
}
$i++;
}
$arr = array_values($arr);
$a++;
}
return $data;
}

封装的方法

示例:

 <?php
$arr = array(
array(
'a' => 1,
'b' => 1,
'c' => 1,
'd' => 1,
),
array(
'e' => 1,
'd' => 1,
'f' => 1,
'g' => 1,
),
array(
'a' => 2,
'b' => 2,
'c' => 2,
'd' => 2,
),
array(
'e' => 2,
'd' => 2,
'f' => 2,
'g' => 2,
),
array(
'e' => 2,
'd' => 2,
'f' => 2,
'g' => 2,
'h' => 2,
),
array(
'e' => 2,
'd' => 3,
'f' => 9,
'g' => 2,
'h' => 3,
),
);
$a = arrClassify($arr);
var_dump($a);

测试用例

运行结果:

测试结果

 array (size=3)
0 =>
array (size=3)
'query' => string '第0类' (length=7)
'head' =>
array (size=4)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
'value' =>
array (size=2)
0 =>
array (size=4)
'a' => int 1
'b' => int 1
'c' => int 1
'd' => int 1
1 =>
array (size=4)
'a' => int 2
'b' => int 2
'c' => int 2
'd' => int 2
1 =>
array (size=3)
'query' => string '第1类' (length=7)
'head' =>
array (size=4)
0 => string 'e' (length=1)
1 => string 'd' (length=1)
2 => string 'f' (length=1)
3 => string 'g' (length=1)
'value' =>
array (size=2)
0 =>
array (size=4)
'e' => int 1
'd' => int 1
'f' => int 1
'g' => int 1
1 =>
array (size=4)
'e' => int 2
'd' => int 2
'f' => int 2
'g' => int 2
2 =>
array (size=3)
'query' => string '第2类' (length=7)
'head' =>
array (size=5)
0 => string 'e' (length=1)
1 => string 'd' (length=1)
2 => string 'f' (length=1)
3 => string 'g' (length=1)
4 => string 'h' (length=1)
'value' =>
array (size=2)
0 =>
array (size=5)
'e' => int 2
'd' => int 2
'f' => int 2
'g' => int 2
'h' => int 2
1 =>
array (size=5)
'e' => int 2
'd' => int 3
'f' => int 9
'g' => int 2
'h' => int 3

最新文章

  1. jQuery 2.0.3 源码分析Sizzle引擎 - 高效查询
  2. 电子病历,到底是用BS还是CS
  3. Etl之HiveSql调优(left join where的位置)
  4. 如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例
  5. C++函数的参数传递机制以及参数的类型选择
  6. 【POJ3580】【块状链表】SuperMemo
  7. 《python基础教程》笔记之 列表
  8. HDOJ 题目分类
  9. click和blur事件冲突解决方案
  10. SVN不出现绿色对勾的情况
  11. jQuery(一)、核心
  12. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境
  13. JDK8 BigDecimal API-创建BigDecimal源码浅析二
  14. python数据结构与算法之问题求解实例
  15. 微信小程序实现部分双向数据绑定(为input、picker、textarea编写统一的更新数据逻辑)
  16. ElasticSearch 工具类封装(基于ElasticsearchTemplate)
  17. 调用write()写
  18. Selenium2自动化测试实战(基于Python语言)— 编写第一个自动化脚本
  19. BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛
  20. sql 经典面试题及答案(选课表)

热门文章

  1. 【转】MEAN:Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
  2. java中的死锁现象
  3. ES6相关实用特性
  4. NBU客户端备份失败,报错error 48 client hostname could not be found
  5. HTML元素(包括HTML5)的标签、属性及事件大全
  6. vs中ffmpeg release版本崩溃问题(转)
  7. python爬虫(10)--PyQuery的用法
  8. SQL Server连接Oracle FAIL
  9. loader的意义和内部机制浅析
  10. 第5章 使用MUI与H5+构建移动端app