PHP使用array_unique对二维数组去重处理

array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

一维数组的重复项:

使用array_unique函数即可,使用实例如下:

代码如下 复制代码

<?php

$aa = array("apple", "banana", "pear", "apple", "wail", "watermalon");

$bb = array_unique($aa);

print_r($bb);

?>

  结果如下:

Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon )

  

二维数组去重项

代码如下 复制代码

例如:

$result = array(

0=>array(‘a‘=>1,‘b‘=>‘Hello‘),

1=>array(‘a‘=>1,‘b‘=>‘other‘),

2=>array(‘a‘=>1,‘b‘=>‘other‘),

);

  处理成

$result = array(

0=>array(‘a‘=>1,‘b‘=>‘Hello‘),

1=>array(‘a‘=>1,‘b‘=>‘other‘) 

);

  使用方法

array_unique($result, SORT_REGULAR);

  

二维数组的重复项:

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

PHP

代码如下 复制代码

<?php

function assoc_unique($arr, $key) {

$tmp_arr = array();

foreach ($arr as $k => $v) {

if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true

unset($arr[$k]);

} else {

$tmp_arr[] = $v[$key];

}

}

sort($arr); //sort函数对数组进行排序

return $arr;

}

$aa = array(

array(‘id‘ => 123, ‘name‘ => ‘张三‘),

array(‘id‘ => 123, ‘name‘ => ‘李四‘),

array(‘id‘ => 124, ‘name‘ => ‘王五‘),

array(‘id‘ => 125, ‘name‘ => ‘赵六‘),

array(‘id‘ => 126, ‘name‘ => ‘赵六‘)

);

$key = ‘id‘;

assoc_unique(&$aa, $key);

print_r($aa);

?>

  显示结果为:

Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

  

㈡因内部的一维数组不能完全相同,而删除重复项

代码如下 复制代码

<?php

function array_unique_fb($array2D) {

foreach ($array2D as $v) {

$v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串

$temp[] = $v;

}

$temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组

foreach ($temp as $k => $v) {

$temp[$k] = explode(",", $v);//再将拆开的数组重新组装

}

return $temp;

}

$aa = array(

array(‘id‘ => 123, ‘name‘ => ‘张三‘),

array(‘id‘ => 123, ‘name‘ => ‘李四‘),

array(‘id‘ => 124, ‘name‘ => ‘王五‘),

array(‘id‘ => 123, ‘name‘ => ‘李四‘),

array(‘id‘ => 126, ‘name‘ => ‘赵六‘)

);

$bb = array_unique_fb($aa);

print_r($bb)

?>

  显示结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )

  

 

原文地址:https://www.cnblogs.com/ymdphp/p/11507517.html

时间: 09-11

PHP使用array_unique对二维数组去重处理的相关文章

二维数组去重

function arrayUnique($array2){ foreach ($array2 as $key => $value) { $v=join(',',$v);//二维变成一维 $tmp[]=$v; } //一维数组去重 $tmp=array_unique($tmp); foreach ($tmp as $key => $value) { $tmp[$key]=explode(',', $value); } return $tmp; } 利用内部函数array_unique,将二维数

PHP二维数组去重的方法(保留各个键值的同时去除重复的项)-- 二维数组的唯一性

对于如下二维数组,要求对其进行去重: $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ), '1'=>array( 'name'=>'susu', 'age'=>26, ), '2'=>array( 'name'=>'james', 'age'=>30, ), 'new'=>array( 'name'=>'kube', 'age'=>37, ), 'list'=>arr

数组合并函数,二维数组相同字段合并到一起。

一般从数据库中提取数据时,会遇到各种各样类型的数据,要求也不尽相同.自己这两天开发的时候遇到一个很纠结的问题,如下: 比如一个二维数组是这样的: Array ( [0] => Array ( [uid] => 231 [username] => 123456 [active] =>aaaa [transfer] =>1111 ) [1] => Array ( [uid] => 231 [username] =>123456 [active] => bb

14-高效求最长公共子序列(二维数组存不下)

/*                                   See LCS again时间限制:1000 ms  |  内存限制:65535 KB难度:3 描述 There are A, B two sequences, the number of elements in the sequence is n.m; Each element in the sequence are different and less than 100000. Calculate the length

java基础:java中的二维数组

二维数组的概念: 一个元素为一维数组的数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. 注意: A:以下格式也可以表示二维数组 a:数据类型 数组名[][] = new 数据类型[m][n]; b:数据类型[] 数组名[] = new 数据类型[m][n]; B:注意下面定义的区别 int x; int y; int x,y; int[] x; int[] y[]; int[] x,y[

二维数组

int[][]arr; arr=new int[5][6];//定义二维数组 int [][]grade=new int [5][6]//直接定义 for each循环:不使用下表就能访问: int=[]mum={12345} for(int a :m){ System.out.print(a)}  //num数组  a 12345;

二维数组与指针

二维数组: int / char / flaot a[n][m]; 可以看做是将一维数组做为基本类型产生的一维数组的数组类型,共n*m个最基本类型.这样看有许多优点(实际上计算机也是这样分配的). 二维数组数组名的注意事项: 1 #include <stdio.h> 2 int main() 3 { 4 int *p,a[3][4]; 5 p = a;//a是二维数组的首地址本质为行指针,原型为 a[][]:无法赋值给普通指针类型 *p: 6 return 0; 7 } 编译就会出现如下错误

二维数组中的查找-牛客网-剑指offer

1.问题描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 2.问题分析 水平方向.垂直方向二重循环查找 3.源代码 package www.nowcoder.com.conquerOffer.array; /** * 二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整

面试题3 ----二维数组中的查找

题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 在剩下的两行两列4个数字中,位于右上角的刚好就是我们要查找的数字7,于是查找过程就可以结束了. 矩阵的加阴影背景的区域是下一步查找的范围.代码如下: bool Find(int* matrix,int  rows,int columns,int number) { bool found = false; if (matri

qsort 函数的使用——对普通数组、指针数组、二维数组中的元素进行排序

在ANSI C中,qsort函数的原型是 #include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)); 解释:qsort函数对含有nmemb个元素的数组进行排序,而base指针指向数组的第一个元素.这个数组的元素个数由size指定. compar函数对qsort的比较操作进行定义,所以可以定制数字的比较,字符串的比较,甚至结构体