欢迎来到曹鸿源的个人站点

       
点击小屏 点击全屏

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 二维数组去重,针对较大的二维数组


欢迎指导!

喜欢这个插件?点击获取:cShare

本文链接地址,转载请标注: https://caohongyuan.cn/article/116


上一篇:element-ui 安装报错 npm WARN saveError ENOENT 等信息

下一篇:Python 查看模块的版本号,在代码获取模块版本号

(邮箱不会公开,只会做回复通知用) 提交 清空 {{comment.content}}
Re:{{response.content}}