【问题标题】: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 的值

【问题讨论】:

  • 数组长什么样?给我们一个简单的

标签: php arrays count duplicates


【解决方案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 替换为条码
    • 完美,非常感谢
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多