php 多维数组按键值分类
2024-09-02 15:53:10
背景:现在有一个多维数组,该数组里面的部分一维数组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
最新文章
- jQuery 2.0.3 源码分析Sizzle引擎 - 高效查询
- 电子病历,到底是用BS还是CS
- Etl之HiveSql调优(left join where的位置)
- 如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例
- C++函数的参数传递机制以及参数的类型选择
- 【POJ3580】【块状链表】SuperMemo
- 《python基础教程》笔记之 列表
- HDOJ 题目分类
- click和blur事件冲突解决方案
- SVN不出现绿色对勾的情况
- jQuery(一)、核心
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境
- JDK8 BigDecimal API-创建BigDecimal源码浅析二
- python数据结构与算法之问题求解实例
- 微信小程序实现部分双向数据绑定(为input、picker、textarea编写统一的更新数据逻辑)
- ElasticSearch 工具类封装(基于ElasticsearchTemplate)
- 调用write()写
- Selenium2自动化测试实战(基于Python语言)— 编写第一个自动化脚本
- BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛
- sql 经典面试题及答案(选课表)
热门文章
- 【转】MEAN:Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
- java中的死锁现象
- ES6相关实用特性
- NBU客户端备份失败,报错error 48 client hostname could not be found
- HTML元素(包括HTML5)的标签、属性及事件大全
- vs中ffmpeg release版本崩溃问题(转)
- python爬虫(10)--PyQuery的用法
- SQL Server连接Oracle FAIL
- loader的意义和内部机制浅析
- 第5章 使用MUI与H5+构建移动端app