我有一个包含item_id | item_name | item_cat1 | item_cat2 | item_cat3
列的项目的CSV文件。我正在将此文件解析为一个包含每个项目信息的数组的大型数组:
$items = Array(
1 => Array(
item_id => item1,
item_name => item1,
item_cat1 => cat1,
item_cat2 => cat2,
item_cat3 => cat3
),
2 => Array(
item_id => item2,
item_name => item2,
item_cat1 => cat4,
item_cat2 => cat5,
item_cat3 => cat6
),
3 => Array(
item_id => item3,
item_name => item3,
item_cat1 => cat1,
item_cat2 => cat7,
item_cat3 => ''
)
)
我想要做的是创建一个嵌套在以下类别的新数组:
$cats = Array(
1 => Array(
'cat_name' => cat1,
'subs' => Array(
1 => cat2,
2 => cat7
)
)
)
但不知何故,它需要递归,如果第三级包含一个条目,也可以获得第三级数组。
如何实现这一目标?
编辑 - 这是我到目前为止所拥有的,以及我想要完成的简短代码:
$mainCats = array();
foreach($items as $item){
if(!in_array($item[10], $mainCats)){
$mainCats[] = array(
'cat_name' = > $item[10],
'cat_subs' => array()
}
// if $item[11] does not exist in cat_subs where $mainCats['cat_name'] == $item[10], add it.
// else check if $item[12] exists in cat_subs where $mainCats['cat_subs']['cat_name'] == $item[11]
}
现有代码的问题在于,由于$item[10]
位于$mainCats
数组中的数组中,因此它会添加每个出现,而不是仅添加一个。