dongyi9783 2014-10-24 13:14
浏览 184

在多维数组php中查找所有重复值

I have a array as following

array(
  0 => array('email' => 'abc@abc.com','name'=>'abc'),
  1 => array('email' => 'xyz@abc.com','name'=>'xyz'),
  2 => array('email' => 'uvw@abc.com','name'=>'uvw'),
  3 => array('email' => 'abc@abc.com','name'=>'str'),
 )

I want to filter out records on email address and get records having same email address. For example from above example I want

 array(
  0 => array(
     array(
         0 => array('email' => 'abc@abc.com','name'=>'abc'),
         1 => array('email' => 'abc@abc.com','name'=>'str'),
     )
 )

My code is

 $tmpArray = array();
    $duplicateRecords = array();
    if (empty($data)) {
        return false;
    }

    foreach ($data as $key => $value) {

        if (in_array($value['Email'], $tmpArray)) {
            $duplicateRecords[] = $value;
        }
        $tmpArray[] = $value['Email'];
    }

    echo '<pre>';print_r($duplicateRecords);die;

But this piece of code only returns the record's once existance, which is of second time. I know when It is traversing first time it isn't having email to compare. Is there any way to get existence of record as many times as it is in array.

  • 写回答

4条回答 默认 最新

  • dongyou7292 2014-10-24 13:22
    关注
    // get count of each email
    $counters = array_count_values(array_column($data, 'email'));
    
    // collect email with counter > 1
    $result = [];
    foreach ($data as $item) {
        if ($counters[$item['email']] > 1) {
            $result[] = $item;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值