-2
[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的结合使用

4

2 回答 2

3

你可以用foreach得到它,

    $prices = [];
    $category = "x";
    foreach($arrays as $array){
        if($array["category"] == $category){
            $prices[] = $array["price"];
        }
    }
    var_dump($prices);
于 2019-09-05T11:43:01.313 回答
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;
}, []);
于 2019-09-05T11:50:19.477 回答