PHP 二维数组按指定值去重

在做二维数组处理的时候,会遇到数组中某些键值相同的情况,假如数据库设置了唯一键,那么就会导致入库失败,所以要根据指定的值去重。

下面是代码展示:

根据指定 name 和 email 两个键值去重

$data = [
    ['name' => '张三', 'email' => 'zhangsan@zh.com', 'source' => ''],
    ['name' => '张三', 'email' => 'zhangsan@zh.com', 'source' => ''],
    ['name' => '张三', 'email' => 'zhangsan@zh.com', 'source' => ''],
    ['name' => '李四', 'email' => 'zhangsan@zh.com', 'source' => ''],
    ['name' => '张三', 'email' => 'lisi@zh.com', 'source' => ''],
    ['name' => '张三', 'email' => 'lisi@zh.com', 'source' => ''],
    ['name' => '张三', 'email' => '王五@zh.com', 'source' => ''],
];
$res = [];
foreach ($data as $k => $v) {
    $code = false;
    foreach ($res as $vv) {
        if ($vv['email'] == $v['email'] && $vv['name'] == $v['name']) {
            $code = true;
            break;
        }
    }
    if (!$code) {
        $res[] = $v;
    }
}

打印出来是这样的:

array (
  0 => 
  array (
    'name' => '张三',
    'email' => 'zhangsan@zh.com',
    'source' => '',
  ),
  1 => 
  array (
    'name' => '李四',
    'email' => 'zhangsan@zh.com',
    'source' => '',
  ),
  2 => 
  array (
    'name' => '张三',
    'email' => 'lisi@zh.com',
    'source' => '',
  ),
  3 => 
  array (
    'name' => '张三',
    'email' => '王五@zh.com',
    'source' => '',
  ),
)

使用了双循环的方式去重,记录下,有时间再做优化和相关效率测试。

这个案例仅支持长度较小的二维数组去重,不然很容易就把CPU搞到100%;

怎么去重较大的二维数组,而且不占用太多CPU,效率还很高?

那么你点击查看这个文章:PHP 二维数组去重,针对较大的二维数组

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值