大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先 将json 解码成数组, 用json_decode 函数 注意 一定要加上第二个参数 否则他会返回一个对象。接下来就是地递归了。这是一个最简单的递归只要逐个遍历即可。
创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站制作、网站设计,塑造企业网络形象打造互联网企业效应。
下面是完整的代码:
$data= json_decode($str,true);
$options = getChildren($data);
function getChildren($parent,$deep=0) {
foreach($parent as $row) {
$data[] = array("id"=$row['id'], "name"=$row['name'],"pid"=$row['parentid'],'deep'=$deep);
if ($row['childs']) {
$data = array_merge($data, getChildren($row['childs'], $deep+1));
}
}
return $data;
}
?
select name="" id=""
?php foreach ($options as $row) { ?
option value="?php echo $row['id'] ?"?php echo str_pad("",$row['deep']*3, "-",STR_PAD_RIGHT); ??php echo $row['name']; ?/option
?php } ?
/select
以上代码已测试通过 效果图如下
/**
* 如果出现多级分类且在一张表中, 此时你需要增添字段确定分类间的关系
* 通常做法是在数据表中加一个字段如 'pid', 如果 id == pid 即判定为父子关系
*/
// 如这张表
// 如果需要找出中国下面的分类,只需要找出所有 pid = 1 即可
SELECT * FROM table WHERE pid = 1;
分级菜单是吧?
方法1:程序里用递归,选项多时会很慢,程序写的不好会很吃资源,甚至进程挂死。
方法2:先列出所有父级选项,在点击某个父级选项后,再用AJAX去获取子级选项,以此类推。省资源,推荐。
建立分类表(type),图片表(images),保存图片时添加分类标识(typeid),在网页上按照分类typeid查找sql筛选就可以了(select * from images where typeid=?)。
$conn = mysql_connect('localhost','root','password');
if ($conn) {
$sql = "SELECT * FROM a, b WHERE a.cat_id = b.cat_id";
$tmp = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($tmp) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
}
mysql_close($conn);