php 多维数组获取特定类别的价格

php multidimensional array get prices in specific category

[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,但无法使用这些函数使其工作

我看到这个问题被标记为重复,但 'duplicate' 只是指遍历数组。基于这个线程中答案的有用性,我相信这个例子也可以帮助其他人。具体来说,我了解了 'function' 和 'use' 与 array_filter

的结合使用

你可以直接使用foreach来获取,

    $prices = [];
    $category = "x";
    foreach($arrays as $array){
        if($array["category"] == $category){
            $prices[] = $array["price"];
        }
    }
    var_dump($prices);

您可以尝试使用 array_filter() and 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;
}, []);