php写好程序后需要嵌套,请教php生成嵌套列表的方法。

本文探讨了一种用于无限分类和高效查询的算法,重点在于处理节点的增删改查及移动操作,避免了递归错误。通过示例代码展示了如何利用树结构管理和调整层级关系。

9

2012-08-31 13:22:34 +08:00   b7048e5c0150a989fed46971f5ac1886.png 1

这种算法常用语无限分类高效查询,树结构左右分值。。。查询简单,难在如何对节点的增、删、改查、移动、赋值

本身就是为了解决递归才用这中算法的,如果在其中用到了递归说明你的思路是错误的~!

function getList(){

$start=1;

$items = $menu->getItems();

/*

* $items=array(

array(

'title'=>'类别名称',

'deeper'=>false,

'shallower'=>false,

'level_diff'=>0

'level'=>2 //缩进等级

)

); */

$lastitem= 0;

if ($items) {

foreach($items as $i => $item)

{

//初始化

$item['deeper'] = false;

$item['shallower'] = false;

$item['level_diff'] = 0;

if (isset($items[$lastitem])) {

$items[$lastitem]['deeper'] = ($item['level'] > $items[$lastitem]['level']); //该类菜单是否有子菜单

$items[$lastitem]['shallower']= ($item['level'] < $items[$lastitem]['level']); //是否是该级别的最后一个

$items[$lastitem]['level_diff']= ($items[$lastitem]['level'] - $item['level']); //级别差用来闭合UL和LI的

}

$lastitem= $i;

}

//用来闭合最顶级ROOT标签

if (isset($items[$lastitem])) {

$items[$lastitem]['deeper'] = (($start?$start:1) > $items[$lastitem]['level']);

$items[$lastitem]['shallower']= (($start?$start:1) < $items[$lastitem]['level']);

$items[$lastitem]['level_diff']= ($items[$lastitem]['level'] - ($start?$start:1));

}

}

return $items;

}

?>

$list=getList();

foreach ($list as $i => $item) :

echo '

';

echo ''.$item['title'].'';

if ($item->deeper) {

echo '

  • ';

}

elseif ($item->shallower) {

echo '

';

echo str_repeat('

', $item->level_diff);

}

else {

echo '';

}

endforeach;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值