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;
}, []);
[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;
}, []);