简体   繁体   English

多维数组:删除重复项并将其移至原始数组

[英]Multi-dimensional arrays: Remove duplicates and clock them to the original array

I want to remove duplicate arrays, and at the same time add a new key 'duplicates' and the total number of duplicates to the original array. 我想删除重复的数组,并同时添加一个新键“ duplicates”,并将重复的总数添加到原始数组。 What's the best way to do this using PHP? 使用PHP做到这一点的最佳方法是什么?

Array
(
    [0] => Array
        (
            [w] => 10
            [r] => 10
            [e] => 489
        )

    [1] => Array
        (
            [w] => 10
            [r] => 10
            [e] => 489
        )

    [2] => Array
        (
            [w] => 10
            [r] => 10
            [e] => 489
        )

    [3] => Array
        (
            [w] => 20
            [r] => 20
            [e] => 489
        )

    [4] => Array
        (
            [w] => 10
            [r] => 10
            [e] =>
        )

)

Would become: 会成为:

Array
(
    [0] => Array
        (
            [w] => 10
            [r] => 10
            [e] => 489
            [duplicates] => 2
        )

    [3] => Array
        (
            [w] => 20
            [r] => 20
            [e] => 489
        )

    [4] => Array
        (
            [w] => 10
            [r] => 10
            [e] =>
        )

)

You can get the unique arrays, and then compare with the original array: 您可以获取唯一的数组,然后与原始数组进行比较:

$result = array_map("unserialize", array_unique(array_map("serialize", $input)));
foreach ($result as &$arr) {
    $cnt = 0;
    foreach ($input as $inArr) {
        if ($arr == $inArr) {
            $cnt++;
        }
    }
    if ($cnt > 1) {
        $arr['duplicates'] = $cnt - 1;
    }
}

The result contains what you want. 结果包含您想要的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM