/**
* 无限分类
* @param [type] $model 一个模型对象
* @param integer $pid 上级ID
* @param array &$categorys 一个保存结果的数组
* @param integer $spac 空格循环次数
* @return [type] array
*/
function data2array($model = null , $pid = 0 , &$categorys = array() , $spac = 0){
$spac = $spac + 2 ;
//得到sql语句
$sql = $model->order('sort desc,id asc')->where(array('pid' => $pid))->field('*')->getSql();
//执行这条sql语句并返回资源类型
$query = $model->execute_resource($sql);
//遍历
while($rows = $query->fetch_assoc()){
$rows['name'] = str_repeat(' ',$spac).'|--'.$rows['name'];
$categorys[] = $rows;
data2array($model , $rows['id'] , $categorys , $spac);
}
return $categorys;
}
/**
* 显示成html样式
* @param [type] $model 一个模型对象
* @param integer $pid 上级ID
* @param integer $selected select的默认选中值
* @param [type] $selectName select的名称
* @param boolean $is_top 是否顶级菜单
* @return [type] string
*/
function displayCate($model = null , $pid = 0 , $selected = 0 , $selectName = null , $is_top = true){
$result = data2array($model , $pid);
$str .= '';
if($is_top){
$str .= '顶级菜单';
}
foreach($result as $key => $value){
/*重置!*/
$selectedstr = '';
if($value['id'] == $selected) $selectedstr = 'selected';
$str .= ''.$value['name'].'';
}
$str .= '';
return $str;
}
//使用
displayCate(M('Channel') , 0 , 0 , 'pid');