我对数组、有疑问
$source = array(
array("id"=>1,"parent"=>0),
array("id"=>2,"parent"=>6),
array("id"=>3,"parent"=>5),
array("id"=>4,"parent"=>6),
array("id"=>5,"parent"=>0),
array("id"=>6,"parent"=>8),
array("id"=>7,"parent"=>0),
array("id"=>8,"parent"=>10),
array("id"=>9,"parent"=>0),
array("id"=>10,"parent"=>0),
);
$result = array(
array("id"=>1,"parent"=>0),
array("id"=>2,"parent"=>6),
array("id"=>6,"parent"=>8),
array("id"=>3,"parent"=>5),
array("id"=>5,"parent"=>0),
array("id"=>4,"parent"=>6),
array("id"=>6,"parent"=>8),
array("id"=>7,"parent"=>0),
array("id"=>8,"parent"=>10),
array("id"=>10,"parent"=>0),
array("id"=>9,"parent"=>0),
);
我希望源数组变成结果数组,如果数组中的项(比如id 2,我就是这个a)有一个父项不是0(实际为6),则该项(id等于6)将附加到项(id相等2),其他项也这样做,最后我们将删除项(id等价6)。。。。请帮助
$by_id = array(); //index the source array by id
//so we can find the parent quickly
foreach($source as $v) {
$by_id[$v['id']] = $v;
}
$result = array();
foreach($source as $k => $v) {
$result[$v['id']] = $v;
//if the parent is 0 or has already been added
//then move to next element
if($v['parent'] == 0 || isset($result[$v['parent']]))
continue;
//otherwise add the parent
$result[$v['parent']] = $by_id[$v['parent']];
}
$result = array_values($result);
print_r($result);
演示