protected $_nodeSelect;
//生成树形无限极分类下拉框选项
protected function _tree($array, $parentId=0, $tmp='', $pid=0, $path=''){
$tmp .= ' ';
$path .= $pid ? $pid . '-' : '';
for($i=0; $i<count($array); $i++){
if($array[$i]['pid'] == $pid){
$this->_nodeSelect .= '<option value="'.$array[$i]['id'].'" data-path="'. $path . $array[$i]['id'] .'"';
if($parentId == $array[$i]['id']){
$this->_nodeSelect .= ' selected="selected"';
}
$this->_nodeSelect .= '>'.$tmp.'|--'.$array[$i]['name'].'</option>';
$this->_tree($array, $parentId, $tmp, $array[$i]['id'], $path);
}
}
}
//此方法待完善
function tree($id=0,$xt=array(),$r=0){
$list = M('');
$classify = $list->where(array('parent_id'=>$id,))->select();
foreach((array)$classify as $k=>$v){
for($i=0;$i<$r;$i++){
$v['name']='<span style="color:red;"> ├</span>'.$v['name'];
}
$xt[]=$v;
$xt=tree($v['id'],$xt,$r+1);
}
return $xt;
}
//递归生成树形多维数组
protected function tree($rows=array(), $parent_id=0) {
foreach($rows as $row){
if($row['parent_id'] == $parent_id){
$tmp = $this->tree($rows, $row['id']);
if($tmp) $row['sub'] = $tmp;
$tree[] = $row;
}
}
return $tree;
}
class Tool {
public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空
/**
* 无限级分类
* @access public
* @param Array $data //数据库里获取的结果集
* @param Int $pid
* @param Int $count //第几级分类
* @return Array $treeList
*/
public function tree(&$data, $pid = 0, $count = 0)
{
foreach ($data as $key => $item)
{
if($item['parent_id'] == $pid){
$item['count'] = $count;
$this->treeList[] = $item;
// unset($data[$key]);
$this->tree($data, $item['id'], $count + 1);
}
}
return $this->treeList;
}
}