新手求助PHP 程序 CI框架开发 高手进来看一眼吧
我用的CI框架开发
我要做的是一个从数据库里面调用一些栏目,然后栏目下面还有子栏目,我想把子栏目显示在主栏目的下面,子栏目跟主栏目的区别是id 跟uid 比方说
主栏目是5 那么子栏目的uid就是5 我用了个判断 如果 id = uid 就让他显示,不知道为什么
会显示在最底下,也就是等主栏目循环完了之后才会循环子栏目,代码如下:
<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">栏目名称</li>
<?php foreach ($news as $news_item):
echo "<li>".$news_item['title']."</li>";
if($news_item['id'] = $news_item['uid']){
echo "<li>"."ss".$news_item['title']."</li>";
}
endforeach ?>
</ul>
补充:以上是后台的,前台也需要这样显示,前台需要分开来做,结构基本是<li></li><ul><ul>
li里面放的是主菜单,ul里面是对应的几个子菜单, 然后会做个js来点击显示隐藏这个子菜单的ul 希望高手解答
‘谢谢
追问:
不行,试了,用这个循环的话 循环了两次,
汗!!! 我以为我回答的够清楚了,你想实现两级栏目,不循环两次怎么能实现,你好好研究研究吧。。。
不是 我的意思是 有主栏目 然后有很多子栏目, 主栏目下面显示子栏目,
数据库中 基本是 id uid title 这样的 id是主栏目的 uid 是子栏目的吧, 如果我要加主栏目 比方说 id 1 uid 0 title 燃气 我加了一个 id是1 的 标题是燃气的, 因为是主栏目 所以uid是0 然后我要添加燃气的子栏目 我可以 这么加 id 2 uid 1 title 燃气工程 这样的吧
答案:常规的方法是ul嵌套,即主菜单ul-li里嵌套子菜单ul,要用到两级循环
首先循环主菜单,要有固定的条件来判断出主菜单,比如主菜单的uid==0或者其它。。。
<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">栏目名称</li>
<?php foreach ($news as $news_item): //循环一次
if($news_item['uid'] == 0){ //判断并得到主菜单
echo "<li>".$news_item['title'] . '<ul>';
foreach ($news as $child_item): //循环二次
if($news_item['id'] == $child_item['uid']){ //判断并得到对应子菜单
echo "<li>"."ss".$child_item['title']."</li>";
}
endforeach;
echo "</ul></li>";
}
endforeach; ?>
</ul>
当然这仅限于两级菜单,多级或无限极,可以使用函数递归
function menu($uid=0){ //设置缺省从主菜单开始
global $news;
foreach ($news as $news_item):
if($news_item['uid'] == $uid){
echo "<li>".$news_item['title'] . '<ul>';
menu($news_item['id']); //递归调用
echo "</ul></li>";
}
endforeach;
}
------ 调用方法 ------------------------------
<ul style="margin-top:20px; border-top:dashed 1px #666666;">
<li style="font-weight:600;">栏目名称</li>
<?php menu();?>
</ul>
当然有时需要判断是否有子菜单存在,你可以根据实际情况加一个判断是否有子菜单的函数,用来判断是否打印子菜单的外部标签<ul></ul>
其他:没看明白你的意思,我猜测你是要实现以下的效果
<?php foreach ($news as $news_item):
if($news_item['uid'] ==0){
echo "<li>".$news_item['title']."</li>";
foreach ($news as $vv){
if($vv['uid']==$news_item['id'])
echo "<li>"."ss".$vv['title']."</li>";
}
}
endforeach ?>
上一个:下的php程序怎么打开
下一个:没有dreamweaver就能打开php程序,有dreamweaver就打不开php程序