html列表/php数组到多维数组php数组
我有一个id为且父id为的数组,希望通过父id将其转换为多维数组。我要更改的数组如下:html列表/php数组到多维数组php数组,php,arrays,multidimensional-array,menu,nested,Php,Arrays,Multidimensional Array,Menu,Nested,我有一个id为且父id为的数组,希望通过父id将其转换为多维数组。我要更改的数组如下: [0] => Array ( [menuid] => 395 [circuitname] => summer [menuname] => news [parentmenuid] => 0 [displayorder] => 1
[0] => Array
(
[menuid] => 395
[circuitname] => summer
[menuname] => news
[parentmenuid] => 0
[displayorder] => 1
)
[1] => Array
(
[menuid] => 2
[circuitname] => summer
[menuname] => Introduction
[parentmenuid] => 395
[displayorder] => 1
)
[2] => Array
(
[menuid] => 521
[circuitname] => summer
[menuname] => Celebrate 100
[parentmenuid] => 2
[displayorder] => 2
)
[3] => Array
(
[menuid] => 80
[circuitname] => summer
[menuname] => hello world
[parentmenuid] => 0
[displayorder] => 2
)
[4] => Array
(
[menuid] => 90
[circuitname] => winter
[menuname] => new page
[parentmenuid] => 0
[displayorder] => 2
)
我希望层次结构的深度没有限制。我看过一些例子,可以将像我这样的数组转换成嵌套的html。不过,我只想将我的数组转换为php多维数组
我希望我的输出与此类似:
[0] => Array
(
[menuid] => 395
[circuitname] => contact
[menuname] => Contact Us
[parentmenuid] => 0
[displayorder] => 1
[children] => Array
(
[0] => Array
(
[menuid] => 500
[circuitname] => contact
[menuname] => Contact Us
[parentmenuid] => 395
[displayorder] => 1
[children] => Array
(
)
)
[1] => Array
(
[menuid] => 2
[circuitname] => diocese
[menuname] => Introduction
[parentmenuid] => 395
[displayorder] => 1
[children] => Array
(
)
)
你可以先把父母分开,在分开他们之后,你可以用foreach让剩下的孩子回到他们各自的父母身边。考虑这个例子:
$raw_values = array( array( 'menuid' => 395, 'circuitname' => 'summer', 'menuname' => 'news', 'parentmenuid' => 0, 'displayorder' => 1, ), array( 'menuid' => 2, 'circuitname' => 'summer', 'menuname' => 'Introduction', 'parentmenuid' => 395, 'displayorder' => 1, ), array( 'menuid' => 521, 'circuitname' => 'summer', 'menuname' => 'Celebrate 100', 'parentmenuid' => 2, ' displayorder' => 2, ), array( 'menuid' => 80, 'circuitname' => 'summer', 'menuname' => 'hello world', 'parentmenuid' => 0, 'displayorder' => 2, ), array( 'menuid' => 90, 'circuitname' => 'winter', 'menuname' => 'new page', 'parentmenuid' => 0, 'displayorder' => 2, ),);
// get the parents first
$parents = array();
foreach($raw_values as $key => $value) {
if($value['parentmenuid'] == 0) {
$parents[$value['menuid']] = $value;
unset($raw_values[$key]);
}
}
// then reunite them to their children
foreach($raw_values as $key => $value) {
$parents[$value['parentmenuid']]['children'][] = $value;
}
echo '<pre>';
print_r($parents);
echo '</pre>';
$raw\u values=array(array('menuid'=>395,'circuitname'=>summer,'menuname'=>news,'parentmenuid'=>0,'displayorder'=>1,),array('menuid'=>2,'circuitname'=>summer,'menuname'=>Introduction,'parentmenuid'=>395,'displayorder'=>1,),array('menuid'=>521,'circuitname'=>summer','Menuame'=>100,'parentmenuid'=>2,'displayorder'=>2,),数组('menuid'=>80,'circuitname'=>summer','Menuame'=>hello world',parentmenuid'=>0,'displayorder'=>2,),数组('menuid'=>90,'circuitname'=>'winter','MENUAME'=>'new page','parentmenuid'=>0','displayorder'=>2,,);
//先找父母
$parents=array();
foreach($key=>$value的原始值){
如果($value['parentmenuid']==0){
$parents[$value['menuid']]=$value;
未设置($raw_值[$key]);
}
}
//然后让他们和他们的孩子团聚
foreach($key=>$value的原始值){
$parents[$value['parentmenuid']['children'][]=$value;
}
回声';
打印(父母);
回声';
您能给出一个所需输出的示例吗?我已经编辑了我的问题。谢谢:)此链接似乎是一个解决方案