求助!PHP中怎样用遍历在多维数组中同时输出多个指定的值?
我需要输出8个列表内容,然后再在指定序号的列表上同时显示背景图片,没有指定的就不显示。列表数组$lists=array($list1,$list2,$list3........
我需要输出8个列表内容,然后再在指定序号的列表上同时显示背景图片,没有指定的就不显示。列表数组$lists=array($list1,$list2,$list3........$list8); 指定序号的数组$sn=array(3,5,8);循环8次$num=0;;具体代码如下:
foreach($lists as $key=>$list){
$num=$num+1;
if($num>8) break;{
echo '<li class="list'.$num.'" style="background:none"></li>';<!--当循环到第3,5,8个列表时显示背景background:url()>
}
}
主要是后面显示背景这一步怎么也写不出来,用if($num==遍历后的$sn),只能显示其中指定序号的一个背景,用if($sn[$key]),输出的是第1,2,3个列表的背景。
我要的效果是在8个列表中,第3,第5,第8个列表显示背景,而胜于序号的列表则不显示背景,请大侠帮助……
但是如果这个序号不是固定的,需要根据情况来变换呢?比如有时候我需要第1,第6,有时候需要2,3,4,5,6……这个选择序号的数组是可以后台选择的。
另外要输出的背景是固定的同一个。
$list = array($a,$b,$c.....);
$sn=explode(',',$bk);<!--$bk是一个后台配置的根据用户需求变化的序号组合>
$num=0;
foreach($list as $k=>$v){
$num=$num+1;
foreach($sn as $n){
if($num>8) break;{
if($num == $n){
echo '<li class="titem0'.$num.'">';
echo '<div class="tabs-tip" style="background:url(assets/images/tip1.gif);background-repeat:no-repeat;display:block"></div></li>';
}else{
echo '<li class="titem0'.$num.'">';
echo '<div class="tabs-tip" style="background:url(assets/images/tip1.gif);background-repeat:no-repeat;display:none"></div></li>';
}
}
}
我这样写之后结果就是只能输出$sn中序号组的其中一个背景,比如3,5,8只能输出第三个,后面的全都执行了display:none。我需要的是后台配置多少个序号,就同时输出多少个背景T_T 展开
foreach($lists as $key=>$list){
$num=$num+1;
if($num>8) break;{
echo '<li class="list'.$num.'" style="background:none"></li>';<!--当循环到第3,5,8个列表时显示背景background:url()>
}
}
主要是后面显示背景这一步怎么也写不出来,用if($num==遍历后的$sn),只能显示其中指定序号的一个背景,用if($sn[$key]),输出的是第1,2,3个列表的背景。
我要的效果是在8个列表中,第3,第5,第8个列表显示背景,而胜于序号的列表则不显示背景,请大侠帮助……
但是如果这个序号不是固定的,需要根据情况来变换呢?比如有时候我需要第1,第6,有时候需要2,3,4,5,6……这个选择序号的数组是可以后台选择的。
另外要输出的背景是固定的同一个。
$list = array($a,$b,$c.....);
$sn=explode(',',$bk);<!--$bk是一个后台配置的根据用户需求变化的序号组合>
$num=0;
foreach($list as $k=>$v){
$num=$num+1;
foreach($sn as $n){
if($num>8) break;{
if($num == $n){
echo '<li class="titem0'.$num.'">';
echo '<div class="tabs-tip" style="background:url(assets/images/tip1.gif);background-repeat:no-repeat;display:block"></div></li>';
}else{
echo '<li class="titem0'.$num.'">';
echo '<div class="tabs-tip" style="background:url(assets/images/tip1.gif);background-repeat:no-repeat;display:none"></div></li>';
}
}
}
我这样写之后结果就是只能输出$sn中序号组的其中一个背景,比如3,5,8只能输出第三个,后面的全都执行了display:none。我需要的是后台配置多少个序号,就同时输出多少个背景T_T 展开
4个回答
展开全部
$i = 1;
foreach($list as $k=>$v){
$i == 3 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i == 5 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i == 8 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i++;
}
碰到3 5 8 就给出带背景的li就成了呗,没有多复杂吧?
foreach($list as $k=>$v){
$i == 3 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i == 5 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i == 8 && echo '<li class="list'.$i.'" style="background:xxx"></li>;
$i++;
}
碰到3 5 8 就给出带背景的li就成了呗,没有多复杂吧?
更多追问追答
追问
谢谢!!!但是如果这个序号不是固定的,需要根据情况来变换呢?比如有时候我需要第1,第6,有时候需要2,3,4,5,6……也就是说$sn这个数组是可以再后台自己配置的。
追答
也可以的,两次循环
$arr = array(2,3,4,6,8);
$i = 1;
foreach($list as $k=>$v){
foreach($arr as $arr_v){
$i == $arr_v && echo ';
}
$i++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多循环几次,注意每次的key和值!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询