Heim > php教程 > PHP源码 > Hauptteil

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

不言
Freigeben: 2018-05-24 10:39:00
Original
83244 Leute haben es durchsucht

    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);
?>
Nach dem Login kopieren

结果如下:

Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。
Nach dem Login kopieren

二维数组去重项

代码如下 复制代码

例如:

$result = array(
0=>array(&#39;a&#39;=>1,&#39;b&#39;=>&#39;Hello&#39;),
1=>array(&#39;a&#39;=>1,&#39;b&#39;=>&#39;other&#39;),
2=>array(&#39;a&#39;=>1,&#39;b&#39;=>&#39;other&#39;),
);
Nach dem Login kopieren

处理成

$result = array(
0=>array(&#39;a&#39;=>1,&#39;b&#39;=>&#39;Hello&#39;),
1=>array(&#39;a&#39;=>1,&#39;b&#39;=>&#39;other&#39;) 
);
Nach dem Login kopieren

使用方法

array_unique($result, SORT_REGULAR);
Nach dem Login kopieren

二维数组的重复项:

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

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

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(&#39;id&#39; => 123, &#39;name&#39; => &#39;张三&#39;),
array(&#39;id&#39; => 123, &#39;name&#39; => &#39;李四&#39;),
array(&#39;id&#39; => 124, &#39;name&#39; => &#39;王五&#39;),
array(&#39;id&#39; => 125, &#39;name&#39; => &#39;赵六&#39;),
array(&#39;id&#39; => 126, &#39;name&#39; => &#39;赵六&#39;)
);
$key = &#39;id&#39;;
assoc_unique(&$aa, $key);
print_r($aa);
?>
Nach dem Login kopieren

显示结果为:

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

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

代码如下 复制代码

<?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(&#39;id&#39; => 123, &#39;name&#39; => &#39;张三&#39;),
array(&#39;id&#39; => 123, &#39;name&#39; => &#39;李四&#39;),
array(&#39;id&#39; => 124, &#39;name&#39; => &#39;王五&#39;),
array(&#39;id&#39; => 123, &#39;name&#39; => &#39;李四&#39;),
array(&#39;id&#39; => 126, &#39;name&#39; => &#39;赵六&#39;)
);
$bb = array_unique_fb($aa);
print_r($bb)
?>
Nach dem Login kopieren

显示结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage