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"=> ...
随机推荐
- 2011-03-17免Oracle客户端连远程Oracle的方法
1.http://www.oracle.com/technetwork/topics/winsoft-085727.html上下载对应版本的instanctclinet zip包 34M 解压后92M ...
- centos软件安装目录(amp目录)
entos安装软件的目录 1. 如果是rpm安装的可以:rpm -ql package-name 2. 可以在根目录上直接find . -name 软件中的某个文件名 不过安装软件一般都在/usr/l ...
- 问题:oracle 字符串转换成日期;结果:[oracle] to_date() 与 to_char() 日期和字符串转换
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...
- python jvm数据
在网上找的抱歉忘了原链接了额 #!/usr/bin/env python # # import os import commands import re import sys (status1, re ...
- Hadoop YARN: 1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers hdfs硬盘90% yarn unhealthy
1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log ...
- C语言获取系统时间
localtime函数 #include <stdio.h> #include <time.h> int main () { time_t t; struct tm *lt; ...
- LINUX关闭防火墙、开放特定端口等常用操作
1. 重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 即时生效,重启后失效: 开启:service iptables s ...
- Codeforces 1142B Lynyrd Skynyrd
---恢复内容开始--- 题意:给你一个排列p和数组a,有t组询问,每次询问一个区间的子序列中是否有p的一个循环排列. 思路:以p = [3, 1, 2]举例, 我们扫描数组b,假设当前数字是1,那么 ...
- 使用ServerSocket建立聊天服务器(一)
-------------siwuxie095 工程名:TestMyServerSocket 包名:com.siwuxie095.socket ...
- 100085G GCD Guessing Game
传送门 题目大意 给定一个数N,现在又一个数x,在1~N之间,现在每次可以猜一个数a,返回gcd(x,a),问说最少猜几次可以确定x. 分析 这个题应该可以算是贪心,但是没人知道这样为啥是对的(雾), ...