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

Как удалить повторяющиеся элементы в многомерном массиве?

У меня есть массив такого вида
$materials = [
    [
        'name'              => 'one',
        'material_group'    => 1,
        'price'             => 200,
    ],
    [
        'name'              => 'two',
        'material_group'    => 2,
        'price'             => 200,
    ],
    [
        'name'              => 'three',
        'material_group'    => 1,
        'price'             => 100,
    ],
    [
        'name'              => 'four',
        'material_group'    => 1,
        'price'             => 90,
    ],
    [
        'name'              => 'five',
        'material_group'    => 1,
        'price'             => 130,
    ],
    [
        'name'              => 'six',
        'material_group'    => 1,
        'price'             => 25,
    ],
    [
        'name'              => 'seven',
        'material_group'    => 1,
        'price'             => 900,
    ],
    [
        'name'              => 'five',
        'material_group'    => 1,
        'price'             => 130,
    ]
];


Мне необходимо найти минимальное значение элементов у которых совпадает material_group, чтобы плучилось вот так:
$materials = [
    [
        'name'              => 'two',
        'material_group'    => 2,
        'price'             => 200,
    ],
    [
        'name'              => 'six',
        'material_group'    => 1,
        'price'             => 25,
    ]
];

Подскажите, как это сделать?
  • Вопрос задан
  • 119 просмотров
Подписаться 2 Средний 7 комментариев
Ответ пользователя nokimaro К ответам на вопрос (3)
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
$result = [];
foreach($materials as $row)
{
    $result[$row['material_group']] = 
        (!isset($result[$row['material_group']]) || $result[$row['material_group']]['price'] > $row['price']) ?
        $row : $result[$row['material_group']];
}
$result = array_values($result);

print_r($result);
Ответ написан
Комментировать