php - 查找数组中的重复值,该数组创建一个新数组,其中键作为重复键,值作为重复项

标签 php arrays

我试图找到数组中的所有重复项,并创建一个新数组,其中键作为重复值键,值作为其重复项的键

示例

[1] => 10
[2] => 11
[3] => 12
[4] => 12
[5] => 12
[6] => 13
[7] => 13

应用重复检查后,我只需要

[4] => [3] // value of key 4 is dupe of key 3
[5] => [3] // value of key 5 is dupe of key 3
[7] => [6] // value of key 7 is dupe of key 6

这让我得到所有重复的键,但我需要重复的键,并将值作为重复的键

$arr_duplicates = array_keys(array_unique( array_diff_assoc( $array, array_unique( $array ) ) ));

谢谢

最佳答案

尝试此方法可能会比其他解决方案提高速度。然而,在大型数据集上会使用更多内存。

<?php

$orig = array(
    1   => 10,
    2   => 11,
    3   => 12,
    4   => 12,
    5   => 12,
    6   => 13,
    7   => 13
);

$seen  = array();
$dupes = array();

foreach ($orig as $k => $v) {
    if (isset($seen[$v])) {
        $dupes[$k] = $seen[$v];
    } else {
        $seen[$v] = $k;
    }
}
unset($seen);

var_dump($dupes);

关于php - 查找数组中的重复值,该数组创建一个新数组,其中键作为重复键,值作为重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930155/

相关文章:

PHP file_get_contents/curl - 得到与浏览器不同的结果

php - 创建 torrent 文件时计算 (sha1) "pieces"

php - 从mysql数据库多表中获取最新记录

arrays - 修复虚拟机和描述 rune 件 - 重写 vmx

c - 查找 C 语言中最长的单词

java - 将字节数组转换为字符串显示垃圾

php - 是否有适用于国家/地区/城市选择器的 Symfony2 表单扩展?

PHP:将 notify.php 从 HTTP 1.0 更改为 1.1 失败

ruby - Ruby 中数组正负值的所有组合

arrays - Perl - 生成唯一标识符