PHP二维数组去重处理

<?php
// 二维数组根据某一键名去重
function assocUnique(&$arr, $key) {
    $tmpArr = array();
    foreach ($arr as $k => $v) {
        if (in_array($v[$key], $tmpArr)) {
            unset($arr[$k]);
        } else {
            $tmpArr[] = $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';
$key = 'name';
assocUnique($aa, $key);
print_r($aa);
<?php
// 内部的一维数组不能完全相同
function arrayUniqueErWei($array) {
    $tmp = [];
    foreach ($array as $v) {
        $v = join(",", $v); // 降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        $tmp[] = $v;
    }
    $tmp = array_unique($tmp); // 去掉重复的字符串,也就是重复的一维数组 下标非连续
    foreach ($tmp as $k => $v) {
        $tmp[$k] = explode(",", $v); // 再将拆开的数组重新组装
    }
    return $tmp;

}
$aa = array(
    array('id' => 123, 'name' => '张三'),
    array('id' => 123, 'name' => '李四'),
    array('id' => 123, 'name' => '李四'),
    array('id' => 124, 'name' => '王五'),
    array('id' => 126, 'name' => '赵六')
);
// php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数
//$ret = array_unique($aa, SORT_REGULAR); // 下标非连续 等同于arrayUniqueErWei方法
$ret = arrayUniqueErWei($aa);
print_r($ret);
// 结果
Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 张三
        )

    [1] => Array
        (
            [0] => 123
            [1] => 李四
        )

    [3] => Array
        (
            [0] => 124
            [1] => 王五
        )

    [4] => Array
        (
            [0] => 126
            [1] => 赵六
        )

)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值