发新话题
打印

求一些无限分级的思路和代码!

求一些无限分级的思路和代码!

如题,谢谢大家的指点!

TOP

最简单的思路就是一张表,有个字段标记分类级别和父ID号

TOP

恩,楼上的正解

TOP

可以再加个id的路径
比如 110|117|120  是说顶级分类是的id是100,二级父类是117,本级是120的id

TOP

最简单的就是:
结构
复制内容到剪贴板
代码:
ID、NAME、FID、OID
1      测试一  0        1
2      测试1   1        1
3      测试(1)   2        1
4      测试二  0        2
5      测试2      1        2
6      测试3      4        1
7      测试(2)   6         1
等等等。
算法:
复制内容到剪贴板
代码:
<?php
$array=array()   //这里就是上面结构中的数据
//对数组按照级别进行排序
$code="if(\$a['fid']==\$b['fid'])";
$code.="{";
$code.="        return 0;";
$code.="}";
$code.="return (\$a['fid']>\$b['fid'])?1:-1;";
uasort($array,create_function('$a, $b', $code));
$c=array();
$d=array();
foreach ($array as $v)
{
        $v['cid']=array();
        if($v['fid']==0)        //对根菜单按照oid排序
        {
                $i = count($c);
                $c[$i] = $v;
                $d[$v[id]] =& $c[$i];
                usort($c,create_function('$m, $n',"if(\$m['oid']==\$n['oid']){return 0;}return (\$m['oid']>\$n['oid'])?1:-1;"));
        }
        else        //对其他菜单按照oid排序
        {
                $i = count($d[$v['fid']]['cid']);
                $d[$v['fid']]['cid'][$i] = $v;
                $d[$v['id']] =& $d[$v['fid']]['cid'][$i];
                usort($d[$v['fid']]['cid'],create_function('$m, $n',"if(\$m['oid']==\$n['oid']){return 0;}return (\$m['oid']>\$n['oid'])?1:-1;"));
        }
}
$array=$c;
echo '';
print_r($array);
echo '';
?>
广告位招租。

TOP

还是楼上的高手啊

TOP

发新话题