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

发表评论