@nevesomostjke

Как извлечь значение с минимальной ценой?

Всем привет
Есть у меня массив

[name] => Название
[brand] => Производитель
[price] => 100

[name] => Название
[brand] => Производитель
[price] => 120

[name] => Другое название
[brand] => Производитель
[price] => 300

Я хочу получить из массива значения с минимальной ценой (price), т.е. мой новый массив должен быть такой:

[name] => Название
[brand] => Производитель
[price] => 100

[name] => Другое название
[brand] => Производитель
[price] => 300

При этом, название и производитель должны проверяться на совпадение. Т.е. если название и производитель в элементах массива одинаковые, то, это одна и та же позиция

Подскажите, пожалуйста
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Стандартная задача, которую можно решить с помощью array_reduce
$res = array_reduce(
	$data,
	function($res, $el) {
        // Проверяет, есть ли пара имени бренда в массиве результатов
		if (!isset($res[$el['name'].$el['brand']])) {
			$res[$el['name'].$el['brand']] = $el;
		} elseif (
	        // если пара имени бренда в массиве результатов проверяет цену
	        $res[$el['name'].$el['brand']]['price'] > $el['price']
		) {
			$res[$el['name'].$el['brand']]['price'] = $el['price'];
		}
		return $res;
	},
	[]
);


araay_reduce online
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы