php 多维数组按键值分类
背景:现在有一个多维数组,该数组里面的部分一维数组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
php 多维数组按键值分类的更多相关文章
- implode函数的升级版,将一个多维数组的值转化为字符串
		/** * implode函数的升级版 * 将一个多维数组的值转化为字符串 * @param $glue * @param $data * @return string */function mult ... 
- 抓取二维数组某值出来,到一维数组---array_column
		/*** * '抓取二维数组某值出来,到一维数组' * @param $arr * @param $item * @return array */ function get_arr_item_val( ... 
- php 二维数组根据值进行排序
		// 先获取要排序的值 $createTime = array_column($data, 'create_time'); // 排序成功 array_multisort($createTime, S ... 
- php 二维数组相同值 相加
		array(3) { [0]=> array(2) { ["sourcesid"]=> int(1) ["addusernum"]=> str ... 
- golang 算法题 : 二维数组搜索值
		package mainimport "fmt"func main() { matrix := [][]int{ {1, 4, 7, 11, 15}, {2, 5, 8, 12, ... 
- 二维数组去除重复值和array_unique函数
		今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对 ... 
- php 计算多维数组中所有值的总和
		php 内置函数 array_sum() 函数返回数组中所有值的总和,只能返回一维数组的总和: 计算多维数组所有值的和就要自定义函数了: function get_sum($array) { $num ... 
- 如何通过numpy获得二维或多维数组的最大、小值索引
		虽然numpy数组中有argmax的函数可以获得数组的最大值的索引,但该函数获得的是numpy数组平铺后的索引,也就是一维索引.那么要怎样才能获得二维索引呢?实现很简单,比如我下面的代码: impor ... 
- php二维数组去除重复值
		<?php //二维数组 $test["aa"] = array("id"=>"17","name"=> ... 
随机推荐
- docker 端口映射iptables: No chain/target/match by that name错误解决方法
			pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 service docker restart 
- CSS2实用知识点详解
			CSS相关知识回顾目录 CSS2选择器 假选择器的使用 属性选择器的使用 边框设置 背景设置 字体设置 文本属性 a标签假选择器使用 列表设置 表格设置 鼠标设置 单位设置 隐藏显示 位置设置 清除浮 ... 
- pyodbc连接MySQL数据库
			1:Python安装pyodbc:pip install pyodbc 2:安装unixODBC-2.3.4.tar.gz ./configure make make install 3:下载基于py ... 
- springmvc 处理器方法返回的是modelandview 重定向到页面
- JAVA基础知识总结10(包类)
			包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ... 
- 如何让DIALOG点击确定按钮之后由于数据不合法不关闭
			public void SetDialogIsClose(DialogInterface pDialog, Boolean pisClose) { try { Field _Field = pDial ... 
- IFC—IfcProduct实体继承框架
- mysql join查询的on 与 where 的不同点
			on总数以left join的左表为准,where会过滤掉,不符合where条件的数据 
- C++标准库vector以及迭代器
			今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器. vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. ... 
- 解决校园Dr客户端端口占用问题(2)
			win + R -> 输入cmd回车 -> 输入netsh winsock reset重启 -> 好了享受上网的快乐吧骚年 
