php二维数组去重
文章描述:
php二位数组去除重复的值,根据指定字段键去除重复值
方法一
array_unique()
array_unique函数可用于除去数组中的重复值,并返回新数组。它的使用方法非常简单,只需要将要去重的数组传递给此函数即可。
$arr = array(
array('name' => '张三', 'age' => 20),
array('name' => '李四', 'age' => 25),
array('name' => '王五', 'age' => 20),
array('name' => '六二', 'age' => 22),
array('name' => '李四', 'age' => 25)
);
$result = array_unique($arr, SORT_REGULAR);
print_r($result);
结果
Array ( [0] => Array ( [name] => 张三 [age] => 20 ) [1] => Array ( [name] => 李四 [age] => 25 ) [2] => Array ( [name] => 王五 [age] => 20 ) [3] => Array ( [name] => 六二 [age] => 22 ) )
根据name值判断是否有重复
//遍历二维数组,将name作为键名
foreach($arr as $value){
$temp_arr[$value['name']] = $value;
}
//去重后,将数组重新按照数字索引重新排序
$temp_arr = array_values($temp_arr);
print_r($temp_arr);
方法二
array_reduce()
array_reduce函数可以对数组中的所有元素进行一次归约操作,最后返回一个标量值。我们可以利用此函数来去重二维数组。
//定义一个回调函数,用于去重
function filter_duplicate($carry, $item){
if(!in_array($item, $carry)){
$carry[] = $item;
}
return $carry;
}
$result = array_reduce($arr, 'filter_duplicate', array());
print_r($result);
方法三
$new_arr = array();
foreach($arr as $value){
$hash = md5(serialize($value)); //计算一个哈希值
if(!isset($new_arr[$hash])){
$new_arr[$hash] = $value; //新元素加入新数组
}
}
$new_arr = array_values($new_arr); //将新数组重新按照数字索引重新排序
print_r($new_arr);
方法四
$arr = array(
array('a','b'),
array('c','d'),
array('a','b')
);
$count = count($arr);
$res = array();
echo "<pre>";
for($i=0;$i<$count;$i++){
$a = $arr[$i];
unset($arr[$i]);
if(!in_array($a,$arr)){
$res[] = $a;
}
}
print_r($res);
其它方法
$array = array(1, 2, 3, 3, 4, 4, 4, 5, 1);
//使用array_unique()函数去重得到新数组
$unique = array_unique($array);
//使用array_diff_assoc()函数得到数组中重复的元素
$repeats = array_diff_assoc($array, $unique);
$arr = [];
//输出所有出现过重复的值
foreach ($repeats as $key => $value) {
echo "$value 出现了重复\n";
}
发布时间:2023/08/25
发表评论