我有一个项目的 CSV 文件,其中包含item_id | item_name | item_cat1 | item_cat2 | item_cat3
. 我正在将此文件解析为一个包含每个项目信息数组的大数组:
$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
数组中,因此它会添加每一次出现,而不是只添加一次。