您的位置:首页 > 编程语言 > PHP开发

php实现无限极分类

2016-10-28 00:00 495 查看
/**
* 无限分类
* @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 .= '<select class="form-control" name="' . $selectName . '">';
if($is_top){
$str .= '<option value="0">顶级菜单</option>';
}
foreach($result as $key => $value){
/*重置!*/
$selectedstr = '';
if($value['id'] == $selected) $selectedstr = 'selected';
$str .= '<option '.$selectedstr.' value="'.$value['id'].'">'.$value['name'].'</option>';
}
$str .= '</select>';
return $str;
}

//使用
displayCate(M('Channel') , 0 , 0 , 'pid');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息