正确答案:
感谢代码宇宙
$i=0; if ($i % 5 == 0) { echo ''; } echo '
...
'; if ($i % 5 == 4) { echo ''; } $i++; if ($i % 5 != 0) { echo ''; }
原文内容:
注意,这是一个细思极恐的问题,请仔细阅题!
首先,有一个不能改变的条件,就是循环输出内容的代码,例如
//此处将循环输出多篇文章
我需要输出的HTML格式如下
...
...
...
...
...
//一共五篇,也就是5个POST
...
...
...
...
...
...
...
...
...
...
条件:
文章数量不确定,一定>5
每隔5篇文章,需要使用一个Box的p包裹(难点在此,第一次输出
,第五次输出
)你不可以把每5个post存一下其他地方,然后最后一起输出!
一个栗子
= =!!! 这不是很简单吗... 有毛难度啊
$postCount=0; //文章计数
echo '
';
//此处将循环输出多篇文章
$postCount++;
echo '
...
';if( $postCount > 1 && $postCount% 5 == 1 ){
}
';echo '
?>
问题描述的有点简单啊。不过要计数起码要有个产量吧,设置一个i每输出一次i+1,自己尝试一下,这肯定不难实现吧
这个和我以前,做的显示图片一样,5张一列显示。
数据结构:
list
最终输出结构list
第二个listi的大小为5,把数据依次放到listi中,最后用listi放入list,页面输出listi就可以了。
规则其实不难梳理。盯住“已经写入DOM的节点数有多少个”,然后把适当的事件同时插入到节点写入DOM的前后,并不难做。
这个问题唯一的麻烦是:迭代过程中,我们无法知道本次迭代是最后一次。因此迭代结束后,如果总数不被5整除,最后必然剩下一组未封口。所以迭代结束后必须要有一个检查。
烧脑可以,实际工程切勿如此耍巧。请老老实实的在V(View)层抛弃这种取一个输出一个的循环方式。
你需要一次取一批(5个或取到底),然后无脑套一个
分组输出。适合实际工程的循环方法(伪代码)应该是这样的:
题主在题面中否定的“把每5个post存一下其他地方,然后最后一起输出”,其实在实际工程中恰恰是对的。别忘记就好。
我提供我的方法供参考: