ThinkPHP自动填充实现无限级分类--无法进行排序的问题

李老师进的ThinkPHP自动填充实现无限级分类中存在一个问题:
  
     无法对无限分类的数据进行desc排序,只能以asc的排序方式。而且输出的结果也是混乱的,不知道有没有办法实现数据的desc排序:

$list = $model->field("id,status,pid,name,final,path,concat(path,'-',id) as bpath")->order('bpath')->select();


图片:aa.jpg
'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">

作者: nzing   发布时间: 2011-08-20

这种数据结构是不能通过mysql直接排序的,,原因很简单bpath是字符串格式,,12会被认为比2小


你要把分类数组弄到php里去排序,,另外你还需要增加一个sort字段用于各分类之前进行排序


php里的思路是这样的:
1。建一个新的数组,把0级分类先加进这个数组,
2.建立一个for循环,然后用bpath来找子分类,找到一组子分类后,先对他们进行排序用这个函数array_multisort(),
3.然后用array_splice函数插入到这个父分类之后,,这样一直循环
注意原数组要把找到那些分类都去掉array_filter(),并重建索引array_values(),,这样原数组越来越少,速度也很快

作者: 心诚志成   发布时间: 2011-10-21