但是这个肯定错了,但是不知道怎么去写啊,逻辑好乱,有大神帮忙吗?分不多,就一个意思!
我写错的:
<?php foreach($catelist as $k=>$v){?> //循环大分类<div class="catemenu"><div class="cname"><?php echo $v['cate_name'];?></div><ul><?phpforeach($catlist as $kk=>$vv){ //循环小分类if ($vv['parentid']==$v['cate_id']){ //判断小分类的父分类?><li><a href="<?php echo $vv['url'];?>"><?php echo $vv['cate_name'];?></a><div class="clr"></div></li><?php } } ?></ul></div><?php }?> 下面是图片的html:
<div class="catemenu"><a href=""><div class="cname"><img src="1.png" / alt="获取数据后如何排成这种形式!" >酒店宾馆</div></a><ul> <li><a href="">新安东阁</a><a href="">七经街店</a><a href="">锦山大街店</a><a href="">江城大街店</a><div class="clr"></div></li><li><a href="1">皇冠假日</a><a href="">汉庭步行街</a><a href="">月光百合</a><a href="">万家酒店</a><div class="clr"></div></li> <li><a href="">凯日达宾馆</a><a href="">艺海宾馆</a><a href="">荣汇酒店</a><a href="">龙苑温泉</a><div class="clr"></div></li> <li><a href="">汉庭站前店</a><a href="">7天连锁</a><a href="">子木屋日租</a><a href="">假日阳光</a><div class="clr"></div></li> <li><a href="">中联酒店</a><a href="">高尔夫会所</a><a href="">尚客优快捷</a><a href="">莱弗仕酒店</a><div class="clr"></div></li> <li><a href="">长城宾馆</a><a href="">丽兹卡尔森</a><a href="">虎跃酒店</a><a href="">阿里郎宾馆</a><div class="clr"></div></li><li><a href="">皇家凯旋</a><a href="">董姐旅馆</a></ul></div><div class="catemenu"><a href=""><div class="cname"><img src="2.png" / alt="获取数据后如何排成这种形式!" >便民工具</div></a><ul><li><a href="">火车余票</a><a href="">航班查询</a><a href="">快递查询</a><a href="">艺龙酒店预定</a><div class="clr"></div></li><li><a href="">彩票开奖</a><a href="">下厨房</a><a href="">爱星座</a><a href="">医药在线资讯</a><div class="clr"></div></li><li><a href="">塔罗占卜</a></ul></div>
回复讨论(解决方案)
你的父类与子类在同一级吗?
你的$catelist的结构是什么样子的,贴出来。
你的父类与子类在同一级吗?
你的$catelist的结构是什么样子的,贴出来。
$query=$db->query("select * from cate where weixin_id='".$weixin_id."' and display = 1 and parentid = 0 order by sortorder ASC");$rows=$db->fetch_array($query)$catelist[]=$rows; 小分类应该是在大分类里面啊,为什么循环小分类的时候还是$catlist
foreach($catelist as $k=>$v)//大分类{ foreach($v['小分类'] as $k=>$v){};} 小分类应该是在大分类里面啊,为什么循环小分类的时候还是$catlist
foreach($catelist as $k=>$v)//大分类{ foreach($v['小分类'] as $k=>$v){};} 因为是同一级的,只是用字段来标示出子分类
所以下面才会出现判断分类的有等于父分类
if ($vv['parentid']==$v['cate_id']){ //判断小分类的父分类那你这个逻辑上应该没有错啊,报什么错了吗?结果是什么样的?
那你这个逻辑上应该没有错啊,报什么错了吗?结果是什么样的?
结果是没能列出像图片那种样式
父子之间的级别关系对了吗?如果只是样式不对,那就是html的问题了
小分类应该是在大分类里面啊,为什么循环小分类的时候还是$catlist
foreach($catelist as $k=>$v)//大分类{ foreach($v['小分类'] as $k=>$v){};} 因为是同一级的,只是用字段来标示出子分类
所以下面才会出现判断分类的有等于父分类
if ($vv['parentid']==$v['cate_id']){ //判断小分类的父分类逻辑上确实没有什么错,提示什么?
因为大分类下的子分类,每4个就是一个
所以我写的现在不是这样的,是我不知道怎么写,这也是我要问的
foreach($catelist as $k=>$v){?> //循环大分类
foreach($catlist as $kk=>$vv){ //循环小分类
}}
你的数据是如何组织的?
难道不是将小分类聚集在相应的大分类下吗?
似你这样组织数据,循环小分类不是要做很多无效劳动吗?
第一步
foreach($catlist as $kk=>$vv){ //循环小分类 $vv['cate_name'] = "<a href='$vv[url]'>$vv[cate_name</a>"; $new_catlist[$vv['parentid']][] = $vv; //按大分类聚类} 第二步
foreach($catelist as $k=>$v){ //循环大分类 //输出大分类数据 $t = $new_catlis[$v['cate_id']]; //取回自己的小分类数据 $t = array_chunk($t, 4); //按4个一组切开 echo '<ul>'; foreach($t as $x) { echo '<li>' . join('', $x) . '</li>'; } echo '</ul>'; //输出大分类剩余数据}为清晰起见,简化了代码
意思到了就行
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。 数组应用&二维数组目录 1. 数组的简单应用2. 数组排序3. 数组查找4. 数组的使用思想5. 查表法6. 二维数组7. 数组综合
foreach($catelist as $k=>$v){?> //循环大分类
foreach($catlist as $kk=>$vv){ //循环小分类
}}
你的数据是如何组织的?
难道不是将小分类聚集在相应的大分类下吗?
似你这样组织数据,循环小分类不是要做很多无效劳动吗?
第一步
foreach($catlist as $kk=>$vv){ //循环小分类 $vv['cate_name'] = "<a href='$vv[url]'>$vv[cate_name</a>"; $new_catlist[$vv['parentid']][] = $vv; //按大分类聚类} 第二步
foreach($catelist as $k=>$v){ //循环大分类 //输出大分类数据 $t = $new_catlis[$v['cate_id']]; //取回自己的小分类数据 $t = array_chunk($t, 4); //按4个一组切开 echo '<ul>'; foreach($t as $x) { echo '<li>' . join('', $x) . '</li>'; } echo '</ul>'; //输出大分类剩余数据}为清晰起见,简化了代码
意思到了就行
大神,简化啥啊 不简化能看懂就不错了,问下 $new_catlist[$vv['parentid']][] = $vv;这里为什么有两个[][],一个不就够用了吗?新手求教,请多多指导
if ($vv['parentid']==$v['cate_id']){ //判断小分类的父分类
所以凡是 $vv['parentid'] 与大类的 $v['cate_id'] 相等的都属于同一大类
于是可以 $vv['parentid'] 的值为键来聚类小类
$k = $vv['parentid'];
$new_catlist[$k][] = $vv;
简写成
$new_catlist[$vv['parentid']][] = $vv;
foreach($catelist as $k=>$v){?> //循环大分类
foreach($catlist as $kk=>$vv){ //循环小分类
}}
你的数据是如何组织的?
难道不是将小分类聚集在相应的大分类下吗?
似你这样组织数据,循环小分类不是要做很多无效劳动吗?
第一步
foreach($catlist as $kk=>$vv){ //循环小分类 $vv['cate_name'] = "<a href='$vv[url]'>$vv[cate_name</a>"; $new_catlist[$vv['parentid']][] = $vv; //按大分类聚类} 第二步
foreach($catelist as $k=>$v){ //循环大分类 //输出大分类数据 $t = $new_catlis[$v['cate_id']]; //取回自己的小分类数据 $t = array_chunk($t, 4); //按4个一组切开 echo '<ul>'; foreach($t as $x) { echo '<li>' . join('', $x) . '</li>'; } echo '</ul>'; //输出大分类剩余数据}为清晰起见,简化了代码
意思到了就行
大神,简化啥啊 不简化能看懂就不错了,问下 $new_catlist[$vv['parentid']][] = $vv;这里为什么有两个[][],一个不就够用了吗?新手求教,请多多指导
建议看下PHP数组处理。









