位置:首页 > 网络编程 > php&cms
点击展开栏目简介
php技术和开源cms使用

php:数据分组循环输出html

分享到: 微信 新浪微博 更多
<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);



上篇:php:类的结构定义和使用方法

发表评论 ​共有​条评论
  • 匿名发表