<?php
$a = array(
array('node_id'=>1,'pid'=>0),
array('node_id'=>2,'pid'=>1),
array('node_id'=>3,'pid'=>1),
array('node_id'=>4,'pid'=>2),
array('node_id'=>5,'pid'=>3),
array('node_id'=>6,'pid'=>5),
array('node_id'=>7,'pid'=>8),
array('node_id'=>8,'pid'=>9),
array('node_id'=>9,'pid'=>0),
);
$tmp = array();
foreach($a as $k=>$v){
$tmp[$v['node_id']] = &$a[$k];
}
$tree = array();
foreach($a as $k=>$v){
if(!empty($v['pid'])){
if(!$tmp[$v['pid']]) continue;
$t = &$tmp[$v['pid']];
$t['childrens'][] = &$a[$k];
}else{
$tree[] = &$a[$k];
}
}
print_r($tree);exit;
输出结果: