公共函数:
/**
* 数组层级缩进转换
* @param array $array 源数组
* @param int $pid
* @param int $level
* @return array
*/
function list_to_level($array, $pid = 0, $level = 1)
{
static $list = [];
foreach ($array as $k => $v) {
if ($v['pid'] == $pid) {
$v['level'] = $level;
$list[] = $v;
unset($array[$k]);
list_to_level($array, $v['id'], $level + 1);
}
}
return $list;
}
控制器:
查询数据并进行层级缩进
$list=model('category')->where("status",1)->order('sort_order asc')->select();
$list= list_to_level($list);
$this->assign('category', $list);
//或者
$this->assign('category', list_to_level(model('category')->where("status",1)->order('sort_order asc')->select()));
显示层
{neq name="v.level" value="1"}|{php}for($i=1;$i<$v['level'];$i++){echo ' ----';}{/php}{/neq}
{$v.category_name}