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"=> ...
随机推荐
- maven 学习 十 关于打包
clean package -Dmaven.test.skip=true -P product 这个命令干的活: 清class文件,打包构建,跳过测试,注意最后一个 -P product, 会激活项目 ...
- @Value在Controller中取值
一.使用 @Value("${name}")注解可以获取自定义的properties文件中的name值 二.配置 如果只是在applicationcontext.xml中配置,那么 ...
- kernel下制作动态logo
kernel下制作动态logo 在uboot中实现logo的好处是反映速度快. 在kernel中实现logo的好处是,不管是android还是什么其他平台,logo显示无需考虑上层平台. 参照三星平台 ...
- IP及端口号
IP:代表一台机器 端口号:每一个程序都有一个端口号与之对应 一个域名对应一个虚拟主机
- Tornado之抽屉实战(1)--分析与架构
项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX 用于偷偷发请求 原生ajax jQuery ajax($.ajax) iframe伪造 上传文件 传统Form ...
- JS继承方式详解
js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现 ...
- floyd路径记录
#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #in ...
- python3-file文件操作
# Auther: Aaron Fan '''打开文件的模式有三种:r,只读模式(默认).w,只写模式.[不可读:不存在则创建:存在则删除内容:因为会清空原有文件的内容,一定要慎用]a,追加模式.[可 ...
- ROS nodelet 理解记录
发现网上许多的例子都是基于官网的例子,还需要做进一步的说明. 1. NODELET_DEBUG 是无法打印的信息的,需要使用NODELET_INFO NODELET_DEBUG("Addin ...
- Java50道经典习题-程序40 字符串排序
题目:根据字符串内字符的ASCII码值对字符串数组进行排序.分析:字符串用ASCII码比较大小,规则是:1.比较首字母的ASCII码大小2.若是前面的字母相同,则比较之后的字母的ASCII码值3.若是 ...