PHP数组函数array_unique处理二维数组的实例
在php手册中,对array_unique的官方解释是针对一维数组的。
在实际的php编程,经常需要对二维数组进行去重复的操作,就想当然的也使用了array_unique函数,但却只返回了二维数组中的第一个数组,很明显二维数组不能用array_unique函数去重复。
此时可以考虑如下的思路:
1、把二维数组降维,二维数组变一维数组。
2、对转变后的一维数组去除重复。
3、把去重复后的一维数组,恢复成二维数组,同时保留原二维数组中一维数组的键名。
以下是二维数组去除重复的函数代码,供参考。
例子:
<?php /** * php二维数组去除重复 * edit www.jbxue.com */ function unique($data = array()){ $tmp = array(); foreach($data as $key => $value){ //把一维数组键值与键名组合 foreach($value as $key1 => $value1){ $value[$key1] = $key1 . '_|_' . $value1;//_|_分隔符复杂点以免冲突 } $tmp[$key] = implode(',|,', $value);//,|,分隔符复杂点以免冲突 } //对降维后的数组去重复处理 $tmp = array_unique($tmp); //重组二维数组 $newArr = array(); foreach($tmp as $k => $tmp_v){ $tmp_v2 = explode(',|,', $tmp_v); foreach($tmp_v2 as $k2 => $v2){ $v2 = explode('_|_', $v2); $tmp_v3[$v2[0]] = $v2[1]; } $newArr[$k] = $tmp_v3; } return $newArr; } $data = array( array('id'=>1, 'title'=>'元芳', 'score'=>10), array('id'=>2, 'title'=>'元芳,你怎么看', 'score'=>10), array('id'=>3, 'title'=>'大人说:元芳,你怎么看', 'score'=>9), array('id'=>1, 'title'=>'元芳', 'score'=>10), ); $newArr = unique($data); ?>
输出结果:
Array
(
[0] => Array
(
[id] => 1
[title] => 元芳
[score] => 10
)
[1] => Array
(
[id] => 2
[title] => 元芳,你怎么看
[score] => 10
)
[2] => Array
(
[id] => 3
[title] => 大人说:元芳,你怎么看
[score] => 9
)
)
您可能感兴趣的文章:
PHP数组函数array_unique处理二维数组的实例
php判断与去除数组中重复数据的方法
加强版的array_unique函数(支持二维数组)
PHP二维数组去重的实例解析
一个去除二维数组中重复项的php函数
php数组去重的方法
去掉二维数组中的重复组合的实现代码
php二维数组根据键名分组相加的实例代码
php 数组去重的方法参考(一维数组去重、二维数组去重)
php去除数组中重复数据的二个例子