php技术和开源cms使用
<li><div>111</div><div>222</div><div>333</div><li/> <li><div>444</div><div>555</div><div>666</div><li/> <li><div>777</div><div>888</div><div>999</div><li/> <li><div>000</div><li/>
如上是4屏,每屏3个数据为一组的轮播图html示例。
假设数据为:$data; count($data)=10;
方法一:
由于是3个一组,最外层循环<li>就表示可以分成多少组;
第一个<li>里需要放索引为0,1,2的数据,第二个=>3,4,5; 3=>6,7,8; 4=>9;
可以看出第n个li,放的就是>3(n-1)且<3n的三个数据。于是:
for($i=0;$i<10/3;$i++){// 3个一组可以分成4组 echo '<li>'; for($j=$i*3;$j<($i+1)*3;$j++){// n从1开始,$i就是代表了n-1,n=$i+1 echo '<div>'.$data[$j].'</div>'; } echo '</li>'; }
以上代码是假设每一组都存在3个数据的情况,实际上最后一组只有一条数据,这样会生成两个空白的div。
需要判断下这种情况。只需要判断下($i+1)*3和count($data)的大小,取较小值。
for($i=0;$i<10/3;$i++){// 3个一组可以分成4组 echo '<li>'; $t=($i+1)*3<count($data)?($i+1)*3:count($data); for($j=$i*3;$j<$t;$j++){// n从1开始,$i就是代表了n-1,n=$i+1 echo '<div>'.$data[$j].'</div>'; } echo '</li>'; }函数封装:
$data=array(111,222,333,444,555,666,777,888,999,000); function makeHtml($data,$groups=3){// $datashuju数据列表 $groups 多少个一组 for($i=0;$i<count($data)/$groups;$i++){// 3个一组可以分成4组 echo '<li>'; $t=($i+1)*$groups<count($data)?($i+1)*$groups:count($data); for($j=$i*$groups;$j<$t;$j++){// n从1开始,$i就是代表了n-1,n=$i+1 echo '<div>'.$data[$j].'</div>'; } echo '</li>'; } } makeHtml($data,4);