检查数组中的重复条目,但仅返回重复的值 [重复]

Posted

技术标签:

【中文标题】检查数组中的重复条目,但仅返回重复的值 [重复]【英文标题】:Check for duplicate entries in array but ONLY return values that are duplicated [duplicate] 【发布时间】:2019-04-04 14:40:50 【问题描述】:

我正在尝试在数组中搜索重复记录... 很简单....

但是我只希望它返回重复的值.. 我不希望它用计数显示整个数组值(有超过 4 亿个条目)

这是我尝试过的代码(它可以打印所有值,但不是我想要的)

    $query = mysqli_query($dbc, "SELECT * FROM `barcodes`");

while ($row = mysqli_fetch_row($query)) 
 
   $result_array[] = $row[16];

 
print_r(array_count_values($result_array));

如果有人可以帮助我,我将不胜感激,因为我已经搜索了 google 和 SO 一个多小时,但没有找到我想要的东西

数组打印样本

[502185864797] => 1
[502185864798] => 1
[502185864799] => 1
[502185864800] => 1
[502185864801] => 2
[502185864802] => 2
[502185864803] => 2
[502185864804] => 2
[502185864805] => 2
[502185864806] => 2

我只希望显示计数 > 1 的值

【问题讨论】:

数组长什么样?给我们一个简单的 【参考方案1】:

我猜array_unique 会做你的工作。它是 php 的内置函数,可从数组中删除所有重复值。

如果您打算只使用重复值,那么您可以使用另一个内置函数array_diff 同时使用这两个数组。

【讨论】:

这没有回答问题。 OP 想要一份所有受骗者的列表,而不是唯一的列表。 好吧,我刚刚编辑了答案。 @Andreas 请再检查一遍【参考方案2】:

使用 array_count_values 获取每个值的计数。 然后使用 array_diff 过滤掉所有唯一值。 Array_keys 获取 array_count_values 放在键中的值。

$counts = array_count_values($arr);
$dupes = array_keys(array_diff($counts, [1]));

看到数组后编辑:

$dupes = array_keys(array_diff($arr, [1]));

这就是你所需要的。该数组已经显示了值(键)的计数。

【讨论】:

【参考方案3】:

根据您想要显示的内容(例如,这只是给出一行的 ID),最好在 SQL 中尝试...

SELECT ID 
    FROM `barcodes` 
    GROUP BY ID 
    HAVING count(ID)>1

这个想法是只检索计数值大于一的 ID。

所以这看起来像......

$query = mysqli_query($dbc, "SELECT barcode 
    FROM `barcodes` 
    GROUP BY barcode 
    HAVING count(barcode)>1");

$result_array = mysqli_fetch_all($query, MYSQLI_ASSOC);

print_r($result_array);

如果你想知道它存在的次数,只需将计数添加到 SELECT 列表中......

SELECT ID, count(ID) times
    FROM `barcodes` 
    GROUP BY ID 
    HAVING count(ID)>1

【讨论】:

好一个奈杰尔+1 是的,我试过我只是得到未定义的索引条形码..这很奇怪......在我的表(条形码)中,列是条形码,产品所以我修改了你输入的内容并将 ID 替换为条码 完美,非常感谢

以上是关于检查数组中的重复条目,但仅返回重复的值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查数组中的值(包括不是函数)[重复]

php检查数组中的特定值是不是包含大于0的值[重复]

使返回数组中的最大数值,javascript [重复]

如何检查数组中的@(at),并在检查后删除此符号[重复]

给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组

文档子数组存储为 Mongo 中第一个条目的重复值