как устранить дубликаты двумя полями из многомерного массива php - PullRequest
0 голосов
/ 19 октября 2019
    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 [user] => 61006cd2ac1728c3c08c2e8d9d714a81 [slug] => piata-fortei-munca

, если существует один и тот же пользователь и слаг, тогда удалите несколько записей из массива, если кто-нибудь знает логику, пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Вы можете использовать array_walk с array_column и array_values

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

Рабочий пример: - https://3v4l.org/k3d4T

0 голосов
/ 19 октября 2019

Поскольку это 2 из 3 значений, которые вы хотите получить в качестве уникального идентификатора, вы можете объединить эти два значения, чтобы создать составной ключ для временного массива. Затем, после создания этого промежуточного массива, используйте 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
        )

)
...