在ThinkPhp中实现无限极分类
16lz
2021-01-22
IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
//查询全部数据
public function index(){
//实例化model
$User=D('Address');
$arr = $User->sel_all();
//print_r($arr);die;
$this->assign('arr',$arr);
$this->display();
}
}
?>
AddressModel.class.php
<?php
namespace Home\Model;
use Think\Model;
class AddressModel extends Model{
//查询address表中所有数据
public function sel_all(){
$arr = $this->Table('address')->select();
return $this->list_level($arr,$pid=0,$level=0);
}
//递归遍历数据
public function list_level($arr,$pid=0,$level=0){
//定义一个静态数组
static $data = array();
foreach($arr as $k => $v){
if($v['pid'] == $pid){
$v['level'] = $level;
$data[] = $v;
$this->list_level($arr,$v['id'],$level+1);
}
}
return $data;
}
}
View
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<table border='1'>
<th>编号</th>
<th>地区</th>
<th>层级</th>
<foreach name='arr' item='v'>
<tr>
<td>{$v.id}</td>
<!--str_repeat('字符串','重复的次数');重复一个字符串-->
<td><?php echo str_repeat('----',$v['level']);?>{$v.name}</td>
<td>
<if condition="$v['level'] eq 0">
一级分类
<elseif condition="$v['level'] eq 1"/>
二级分类
<else/>
三级分类
</if>
</td>
</tr>
</foreach>
</table>
</body>
</html>
更多相关文章
- 服务器数据库系列 - 日志系列 - Nginx日志
- 指导我优化我的PHP代码,用数组中的空数据填充缺失值
- thinkPHP的数据添加、修改、删除
- 在MySQL数据库中搜索与多个Tag记录相关/包含的书签
- 使用jquery和php手动在数据库中增加一个字段[复制]
- 如何使用ajax向php发送与每个按钮相关的数据?
- php标准库 SPL 数据结构之-----SplDoublyLinkedList(双向链表)
- php 封装原生数据导出的方法
- 当将带有撇号的单词保存到数据库时,mysql_real_escape_string会添