0

我有一个项目的 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数组中,因此它会添加每一次出现,而不是只添加一次。

4

0 回答 0