PHP Ассоциативный массив, как отфильтровать по величине значений?

Доброго времени суток, имеется ассоциативный массив:
$arr = [['name' => 'ford', 'count' => 2], ['name' => 'ford', 'count' => 8], ['name' => 'lada', 'count' => 9], ['name' => 'lada', 'count' => 2]]


Как из данного массива получить наибольшее значение марок имени?

Ожидаемый результат на выходе - ford - 8, lada - 9
  • Вопрос задан
  • 301 просмотр
Решения вопроса 2
@roman94
Как вариант
$arr = [['name' => 'ford', 'count' => 2],
    ['name' => 'ford', 'count' => 8],
    ['name' => 'lada', 'count' => 9],
    ['name' => 'lada', 'count' => 2]];

$result = [];
foreach($arr as $car) {
    if (!isset($result[$car['name']]) || $result[$car['name']] < $car['count']) {
        $result[$car['name']] = $car['count'];
    }
}
Ответ написан
@sidni
Php Developer
Видоизмененный вариант Роман
<?php

$arr = [
    ['name' => 'ford', 'count' => 2], 
    ['name' => 'ford', 'count' => 8], 
    ['name' => 'lada', 'count' => 9], 
    ['name' => 'lada', 'count' => 2]
    ];

$res = array_reduce($arr, function($carry, $item) {
    if(!isset($carry[$item['name']]) || ($carry[$item['name']] < $item['count']) ) {
        $carry[$item['name']] = $item['count'];
    }
    return $carry;
});
var_dump($res);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽