欢迎光临
我们一直在努力

树形算法-PHP教程,PHP应用

建站超值云服务器,限时71元/月

<?

//测试数据

$ar = array(

array(id=>1,pid=>0),

array(id=>2,pid=>0),

array(id=>3,pid=>2),

array(id=>4,pid=>0),

array(id=>5,pid=>3),

array(id=>6,pid=>1),

array(id=>7,pid=>1),

array(id=>8,pid=>6),

array(id=>9,pid=>7),

array(id=>10,pid=>9)

);

//排序函数

function cmd($a,$b) {

if($a[pid]==$b[pid]) return 0;

return $a[pid]>$b[pid]?1:-1;

}

//排序,为避免数据中父节点在子节点后面出现,这种情况在多次修改数据后经常会发生的

//排序的目的就是防止这种情况造成的混乱

uasort($ar,cmd);

//定义目标数组

$d = array();

//定义索引数组,用于记录节点在目标数组的位置

$ind = array();

foreach($ar as $v) {

$v[child] = array(); //给每个节点附加一个child项

if($v[pid] == 0) {

$i = count($d);

$d[$i] = $v;

$ind[$v[id]] =& $d[$i];

}else {

$i = count($ind[$v[pid]][child]);

$ind[$v[pid]][child][$i] = $v;

$ind[$v[id]] =& $ind[$v[pid]][child][$i];

}

}

//检查结果

print_r($d);

?>

算法特点:利用b+树概念,只用一次循环就可生成树形数组

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 树形算法-PHP教程,PHP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章