使用PHP为记录集中的每个第3条记录输出特定代码

时间:2012-10-22 12:51:56

标签: php loops

目前我有一个页面输出为数据库中的每个人保存的一堆记录。因此,对于此页面上显示的每个人,他们的所有详细信息也会显示出来。

我现在要做的是正确格式化这些数据,以便在每个第3或第4个人之后插入一些HTML代码来打破数据并使其更容易阅读,例如灰色条表明数据是什么是为了。我不知道我怎么能这样做?

修改
我已将建议的代码添加到我的代码中,现在看起来像这样:

    <div class="content">
         <?php $i=0; ?>
            <?php foreach ($members as $members) { ?>
            <div class="repblock">

            </div>              
        <?php
            if (($i%4) == 0) { ?>
                </div>
            </div>
            <div class="page" style="page-break-before: always;">
                <div class="content">
        <?php   }
         $i++; } ?>
    </div>

并且建议的代码适用于某一点。发生的事情是第一个成员自己显示,然后四个记录显示在一个组中,然后它继续显示剩下的四个一组,直到记录用完为止,如下所示:

  

会员记录1
  ----------------
会员记录2
会员记录3
会员记录4会员记录5
  ----------------
会员记录6
会员记录7会员记录8会员记录9
  ----------------
会员记录10
会员记录11

为什么它在开头只显示一条记录,然后正确分组记录?

3 个答案:

答案 0 :(得分:3)

如果没有代码示例,我将假设您正在使用标准for循环来迭代数据。有了这个,您可以使用模数运算符%来检查您所在的数字:

$numRecords = count($yourData);
for ($i = 0; $i < $numRecords; $i++) {
    if (($i > 0) && (($i % 3) == 0)) {
        // display a <br />, <hr />, whatever
    }

    // display stuff
}

如果您正在使用foreach循环,则可以在其外部保留一个单独的计数器,并以相同的方式检查:

$i = 0;
foreach ($yourData as $singleRecord) {
    if ((++$i % 3) == 0) {
        // display a <br />, <hr />, whatever
    }

    // display stuff
}

答案 1 :(得分:2)

您可以使用模数运算符来确定每三分之一的索引。

if ($index % 3 == 0) {
    // Every third.
}

答案 2 :(得分:1)

这很简单。

你必须保留一个计数器,为每个人增加一个计数器,只要它超过3或4,输出分隔符和重置计数器。

类似的东西:

$i = 0;
// for loop here
if(($i = $i%3) == 0){
    echo '<hr />';
}
$i++;
// end for loop