многомерный массив php получить цены в определенной категории
[0] => Array
(
[id] => 004002718
[price] => 5.00
[category] => x
)
[1] => Array
(
[id] => 030285882
[price] => 8.99
[category] => y
)
[2] => Array
(
[id] => 040685111
[price] => 19.99
[category] => x
)
Как я могу узнать цены на все товары в определенной категории? Так, например, для значения категории "x" я бы хотел вернуть [5.00, 19,99].
Таким образом, я могу легко извлечь максимальную, минимальную и среднюю цену в каждой категории (что является моей целью).
Я пробовал использовать array_column, array_keys и array_filter, но не смог заставить его работать с помощью этих функций
Я вижу, что этот вопрос был отмечен как повторяющийся, но "дубликат" просто относится к циклу по массиву. Основываясь на полезности ответов в этой теме, я уверен, что этот пример может помочь и другим. В частности, я узнал об использовании 'function' и 'use' в сочетании с array_filter
2 ответа
Вы можете попробовать использовать array_filter() и array_column().
- С помощью
array_filter()
фильтровать массив определенной категории - с помощью
array_column()
просто получите столбец цен в виде массива.
Пример кода:
$filter_category = 'x';
$filtered_data = array_filter($array, function($item) use ($filter_category) { return $item['category'] === $filter_category; });
$filtered_data = array_column($filtered_data, 'price');
В качестве альтернативы вы можете попробовать array_reduce ().
Пример кода:
$filter_category = 'x';
$filtered_data = array_reduce($arr, function($old, $new) use ($filter_category) {
if ($new['category'] === $filter_category) {
$old[] = $new['price'];
}
return $old;
}, []);
Вы можете просто использовать foreach
получить это,
$prices = [];
$category = "x";
foreach($arrays as $array){
if($array["category"] == $category){
$prices[] = $array["price"];
}
}
var_dump($prices);