php - 如何按值和类型合并数组
问题描述
我有以下数组:
Array (
[0] => Array (
[id] => 1
[name] => Apple
[type] => Fruit
)
[1] => Array (
[id] => 3
[name] => Chanterelles
[type] => Vegetable
)
[2] => Array (
[id] => 4
[name] => Lenses
[type] => Legume
)
[3] => Array (
[id] => 2
[name] => Banana
[type] => Fruit
)
[4] => Array (
[id] => 5
[name] => Rocket
[type] => Vegetable
)
)
我的预期输出:
Array (
[Fruit] => Array (
Array (
[id] => 1
[name] => Apple
)
Array (
[id] => 2
[name] => Banana
)
)
[Vegetable] => Array (
Array (
[id] => 3
[name] => Chanterelles
)
Array (
[id] => 5
[name] => Rocket
)
)
[Legume] => Array (
Array (
[id] => 4
[name] => Lenses
)
)
)
我的初始数组:
var_dump(array(
array(
'id' => 1,
'name' => 'Apple',
'type' => 'Fruit'
),
array(
'id' => 3,
'name' => 'Chanterelles',
'type' => 'Vegetable'
),
array(
'id' => 4,
'name' => 'Lenses',
'type' => 'Legume'
),
array(
'id' => 2,
'name' => 'Banana',
'type' => 'Fruit'
),
array(
'id' => 5,
'name' => 'Rocket',
'type' => 'Vegetable'
)
));
我尝试了以下方法:
foreach($myarray as $ingredient){
$type_arr[] = $ingredient['type'];
}
$type_arr_uq = array_unique($type_arr);
$new_arr = array();
foreach($type_arr_uq as $type){
foreach($myarray as $ingredient){
if($type == $ingredient['type']){
$new_arr[$type] = ['id' => $ingredient['id'], 'name' => $ingredient['name']];
}
}
}
输出:
Array
(
[Fruit] => Array
(
[id] => 2
[name] => Banana
)
[Vegetable] => Array
(
[id] => 5
[name] => Rocket
)
[Legume] => Array
(
[id] => 4
[name] => Lenses
)
)
演示:http ://sandbox.onlinephpfunctions.com/code/4886faa73b56b62fdf954f06e902f1d0bd301a71
解决方案
$new_arr[$type] = ['id' => $ingredient['id'], 'name' => $ingredient['name']];
您正在覆盖此位置可能已经存在的数组条目 - 添加一个新条目:
$new_arr[$type][] = ['id' => $ingredient['id'], 'name' => $ingredient['name']];
推荐阅读
- aws-api-gateway - 使用 api 开放规范的 API 网关无法识别输入 json
- excel - 函数 Sumproduct - 搜索 - 左
- python - 如何在 django 中获取文本字段的结果?
- c++ - _asm 函数,打印“Pow (x) = x^2”
- mongodb - Mongodb 在文档不存在的情况下获取文档的性能
- apache-kafka - KSQLDB:选择字段作为数组
- c++ - 为什么这个简单的向量 c++ 程序不能工作?
- python - 处理 BrokenProcessPool 异常
- python - Pandas Groupby 多列的最大值
- angular9 - 我们如何在单击 fullcalendar-angular CustomButton 时添加像 html 这样的下拉列表