我想创建一个函数,它可以返回一个多维数组,比如类别及其子类别嵌套在里面通过一个数组包含id,类别名称和父类别id
这是我的数组<?php
$category = array(
[
'id' => 1 ,
'name' => "Main Category 1",
'parent_id' => 0 ,
'subcategories' => array()
],
[
'id' => 2 ,
'name' => "Sub Category of id 1",
'parent_id' => 1,
'subcategories' => array()
],
[
'id' => 3 ,
'name' => "Sub Category of id 2",
'parent_id' => 2,
'subcategories' => array()
],
[
'id' => 4 ,
'name' => "Another sub Category of id 2",
'parent_id' => 2,
'subcategories' => array()
],
[
'id' => 5 ,
'name' => "Another sub Category of id 1",
'parent_id' => 1,
'subcategories' => array()
],
); ?>
我想把它变成这样
<?php
$category = array(
[
'id' => 1 ,
'name' => "Main Category 1" ,
'parent_id' => 0 ,
'subcategories' => array(
[
'id' => 2 ,
'name' => "Sub Category of id 1" ,
'parent_id' => 1 ,
'subcategories' => array(
[
'id' => 3 ,
'name' => "Sub Category of id 2" ,
'parent_id' => 2
] ,
[
'id' => 4 ,
'name' => "Another sub Category of id 2" ,
'parent_id' => 2
]
)
] ,
[
'id' => 5 ,
'name' => "Another sub Category of id 1" ,
'parent_id' => 1
]
)
]
); ?>
parent_id引用数组中的类别id
必须正确使用'&'运算符,
$categories = array();
//make associative array of $category with respective id as key
foreach($category as $val){
$categories[$val['id']]= $val;
}
// fill in 'subcategories' while maintaining the references using '&' operator
foreach($categories as $key => &$val){
if($val['parent_id']==0)
continue;
$categories[$val['parent_id']]['subcategories'][] = &$val;
}
var_dump($categories[1]);