Задать вопрос
@tokyodead

Как удалить дубликаты в многомерном массиве?

Добрый день, подскажите плс, не знаю как это сделать, есть учетная система товаров, я с помощью апи вытягиваю оттуда товары, и создаю XML, проблема в том что в массиве есть повторяющиеся артикулы товаров, мне нужно удалить эти дубликаты артикулов.

Array
(
    [status] => ok
    [data] => Array
        (
            [created] => 26.10.2021 14:44
            [name] => test
            [count] => 2267
            [sum] => 123456
            [items] => Array
                (
                    [0] => Array
                        (
                            [guid] => test
                            [barcode] => 123456789
                            [name] => Аква Марис
                            [pack] => 30
                            [rest_abs] => 120
                            [rest_pack] => 4
                            [rest_piece] => 0
                            [rest_rezerv] => 0
                            [price] => 1000
                            [sum] => 4000
                            [nds] => 0
                            [expiration_date] => 01.12.2021
                            [producer] => Ядран-Галенски Лабораторий а.о.
                        )

                    [1] => Array
                        (
                            [guid] => test
                            [barcode] => 123456789
                            [name] => Example
                            [pack] => 1
                            [rest_abs] => 1
                            [rest_pack] => 1
                            [rest_piece] => 0
                            [rest_rezerv] => 0
                            [price] => 235
                            [sum] => 235
                            [nds] => 1
                            [expiration_date] => 01.01.2023
                            [producer] => Зерде-фито
                            [price_limit] => 328.21
                            [reg_num] => test
                            [series] => test
                            [tnvd] => test
                        )


Поле barcode это артикул, есть дубликаты артикулов, и это одинаковые товары, но разные производители, мне нужно какой то из них удалять. Как это сделать?
Пробовал через array_unique() не получается, потом прочитал что с ассоциативными массивами это не работает.

Так же пробовал

$arr1 = array_unique($response);
echo '<pre>';
print_r($arr1);
echo '<pre>';
$arr2 = array_diff_assoc($response, $arr1);
echo '<pre>';
print_r($arr2);
echo '<pre>';
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
$unique = [];

foreach ($response['data']['items'] as $item) {
  // В таком виде будет использоваться последнее значение из массива,
  // но вы можете использовать любую логику.
  $unique[$item['barcode']] = $item;
}

$unique = array_values($unique);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы