【问题标题】:how eliminate duplicates by two fields from a multidimensional array php如何从多维数组php中消除两个字段的重复项
【发布时间】:2020-02-16 09:27:57
【问题描述】:
    Array
    (
        [piata-fortei-munca] => Array
            (
                [0] => Array
                    (
                        [date] => 2019-10-19 09:10:07
                        [user] => 61006cd2ac1728c3c08c2e8d9d714a81
                        [slug] => piata-fortei-munca
                    )

                [1] => Array
                    (
                        [date] => 2019-10-19 09:10:07
                        [user] => 61006cd2ac1728c3c08c2e8d9d714a81
                        [slug] => piata-fortei-munca
                    )

                [2] => Array
                    (
                        [date] => 2019-10-19 09:10:09
                        [user] => a8b6c2879aa0f38da1fd49a4e86e1525
                        [slug] => piata-fortei-munca
                    )

                [3] => Array
                    (
                        [date] => 2019-10-19 09:10:09
                        [user] => a8b6c2879aa0f38da1fd49a4e86e1525
                        [slug] => piata-fortei-munca
                    )

                [4] => Array
                    (
                        [date] => 2019-10-19 09:10:18
                        [user] => 42d80d8dc9a9547223e2bfea172738cf
                        [slug] => piata-fortei-munca
                    )
[blockchain-bitcoin] => Array
        (
            [0] => Array
                (
                    [date] => 2019-10-19 08:10:58
                    [user] => 4b01473f1d3f1846b1e83b33e1af0b11
                    [slug] => blockchain-bitcoin
                )

            [1] => Array
                (
                    [date] => 2019-10-19 08:10:58
                    [user] => 4b01473f1d3f1846b1e83b33e1af0b11
                    [slug] => blockchain-bitcoin
                )

        )
)

我有一个这样的数组结构 我想删除重复项

例如,对于键 [piata-fortei-munca] 多个数组具有相同的用户和 slug [用户] => 61006cd2ac1728c3c08c2e8d9d714a81 [slug] => piata-fortei-munca

如果存在相同的用户和 slug,则从数组中删除多个条目 如果有人知道逻辑,请帮助我

【问题讨论】:

标签: php arrays multidimensional-array duplicates


【解决方案1】:

您可以将array_walkarray_columnarray_values 一起使用

array_walk($a, function(&$v ,$k){
    $v  = array_values(array_column($v, null, 'user'));
});
print_r($a);

工作示例:- https://3v4l.org/k3d4T

【讨论】:

  • 这也不适用于 slug,因为他们询问 是否存在相同的用户和 slug,只是碰巧他们在示例代码中具有相同的 slug这就是为什么这样做。
  • 不确定,但我认为它们的意思是两者的结合,但这取决于 OP。
  • @NigelRen 让我们等待 OP 响应,我会监控这个。
【解决方案2】:

由于它是您想要获得的 3 个值中的 2 个作为唯一标识,因此您可以将这两个值结合起来为临时数组创建一个复合键。然后,一旦您创建了这个中间数组,使用array_values() 删除复合键...

$output = [];
foreach ( $data['piata-fortei-munca'] as $entry )   {
    $output[$entry['user']."#".$entry['slug']] = $entry;
}

print_r(array_values($output));

用你的测试数据给出...

Array
(
    [0] => Array
        (
            [date] => 2019-10-19 09:10:07
            [user] => 61006cd2ac1728c3c08c2e8d9d714a81
            [slug] => piata-fortei-munca
        )

    [1] => Array
        (
            [date] => 2019-10-19 09:10:09
            [user] => a8b6c2879aa0f38da1fd49a4e86e1525
            [slug] => piata-fortei-munca
        )

    [2] => Array
        (
            [date] => 2019-10-19 09:10:18
            [user] => 42d80d8dc9a9547223e2bfea172738cf
            [slug] => piata-fortei-munca
        )

)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2018-07-26
    • 2018-09-17
    相关资源
    最近更新 更多