многомерный массив 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);
Другие вопросы по тегам