将php数组组织到多级子父组织中
我发现了一段代码,它接受了一个数组并将其组织在父子多级组织中。像下面这样将php数组组织到多级子父组织中,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我发现了一段代码,它接受了一个数组并将其组织在父子多级组织中。像下面这样 $phases = array( array('id'=>1,'name'=>'First Step','parent_id'=>0,'percentage'=>.50,'order'=>1), array('id'=>2,'name'=>'Second Step','parent_id'=>0, 'percentage'=>.50,'order'=&g
$phases = array(
array('id'=>1,'name'=>'First Step','parent_id'=>0,'percentage'=>.50,'order'=>1),
array('id'=>2,'name'=>'Second Step','parent_id'=>0, 'percentage'=>.50,'order'=>2),
array('id'=>3,'name'=>'Third Step','parent_id'=>2, 'percentage'=>.25,'order'=>3),
array('id'=>4,'name'=>'Fourth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
array('id'=>5,'name'=>'Fifth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
array('id'=>6,'name'=>'Sixth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
);
它能够将所有子数组添加到它们尊敬的父数组下。我找不到那个的代码。任何人都有一个想法请注意,非常确定您最终尝试的是什么结构,但也许这会让您开始:
$multidim = array();
$multidim[0] = array();
foreach ($phases as $phase) {
$multidim[$phase['id']] = array(
'name' => $phase['name'],
'children' => array(),
'percentage' => $phase['percentage'],
'parent_id' => $phase['parent_id']
);
$multidim[$phase['parent_id']]['children'][] = $phase['id'];
}
或者你想要像这样的东西:
$phases[0][2][3] = array('name' => 'Third Step', 'percentage' => 0.25, 'order' => 3);
Like,结果是id=2的数组将有一个“children”元素,该元素是包含id=2-6的元素的数组?你能举个例子吗?谢谢。我发现这行有错误<代码>如果(!isset($trearr[$phase['id']]['children'])$phase['children']=$trearr[$phase['id']]['children'])代码>有解决方案的报价吗?当我评论这句话时,它就像一个符咒。
<?php
$phases = array(
array('id'=>1,'name'=>'First Step','parent_id'=>0,'percentage'=>.50,'order'=>1),
array('id'=>2,'name'=>'Second Step','parent_id'=>0, 'percentage'=>.50,'order'=>2),
array('id'=>3,'name'=>'Third Step','parent_id'=>2, 'percentage'=>.25,'order'=>3),
array('id'=>4,'name'=>'Fourth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
array('id'=>5,'name'=>'Fifth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
array('id'=>6,'name'=>'Sixth Step','parent_id'=>2, 'percentage'=>.25,'order'=>1),
//just to add levels
array('id'=>7,'name'=>'7th Step','parent_id'=>5, 'percentage'=>.25,'order'=>1),
array('id'=>8,'name'=>'8th Step','parent_id'=>6, 'percentage'=>.25,'order'=>1)
);
$treearr = array('0' => array('children'=> array()));
foreach($phases as $phase){
if(!isset($treearr[$phase['id']]['children'])) $phase['children'] = $treearr[$phase['id']]['children'];
$treearr[$phase['id']] = $phase;
if(!isset($treearr[$phase['parent_id']])) $treearr[$phase['parent_id']] = array('children'=> array());
$treearr[$phase['parent_id']]['children'][] = &$treearr[$phase['id']];
}
$tree = $treearr[0];
unset($treearr);
var_dump($tree);