【必须掌握】列表输出不同数量组合的方法
博主:紫藤心-迷途
浏览次数:618次
1. 奇偶数交替输出不同格式的列表(难度:易)
如:第一行的class="left",第二行的class="right"
{loop table="article" limit="24" isshow="1" as="v"}
{if($v_n%2==1)}
<div class="left">{$v['title']}</div>
{else}
<div class="right">{$v['title']}</div>
{/if}
{/loop}可以应用到loop和栏目列表
2. 输出相同数量分组的列表(难度:中)
如:3个为一组,一组组输出
(1)在列表内根据每行数量判断
{foreach $lists as $v}
{if($v_n%3==0)}
<div class="abc">
{/if}
<p>{$v['title']}</p>
{if($v_n%3==2)}
</div>
{/if}
{/loop}
{if($v_n%3!=2)}
</div>
{/if}注意最后一个标签是在foreach后面的,别忘记了
(2)先分组后输出
{php
$newlist = [];
$i = 0
foreach($lists as $k=>$v){
$newlist[$i][]=$v;
if($k%3==2){
$i++;
}
}
/}
{foreach $newlist as $v}
<div class="abc">
{foreach $v as $vv}
<p>{$vv['title']}</p>
{/foreach}
</div>
{/foreach}3. 交替输出每行不同数量的列表(难)
这种实在有“亿”点点麻烦,不过也不是不能实现,我们使用先分组后输出的方式。
如:第一行3个为一组,第二行4个为一组,循环输出
{php
$newlist = [];
$i = 0;
foreach($lists as $v){
$newlist[$i][]=$v;
if($i%2==0){
if($k%3==2){
$i++;
}
}else{
if($k%4==3){
$i++;
}
}
}
/}
{foreach $newlist as $v}
{if($v_n%2==0)}
<div class="abc1">
{foreach $v as $vv}
<p>{$vv['title']}</p>
{/foreach}
</div>
{else}
<div class="abc2">
{foreach $v as $vv}
<p>{$vv['title']}</p>
{/foreach}
</div>
{/if}
{/foreach}那么,如何将loop转换成foreach去处理输出呢?
这个也简单,多一次循环罢了,如下:
{php
$lists = [];
/}
{loop table="article" isshow="1" limit="24" as="v"}
{php
$lists[]=$v;
/}
{/loop}
这样就得到了$lists,之后就可以使用foreach 输出 $lists以上,就是所有内容,虽然有些难度,当然,复制粘贴,然后修改下就可以用了。

