如何在表中迭代每5个结果?

时间:2016-11-10 08:15:47

标签: php codeigniter loops foreach

我有一个foreach需要每桌上每行5个结果分发。

这是我目前的预告:

<?php 

    $i = 0;
    echo "<tr>";

    foreach($klasifikasi as $result){
       $i++;


       if($i % 5 == 0){
         echo "<td width='20%' align='center'>".$result['klasifikasi']."</td>";
         echo "<td width='20%' align='center'>".$result['klasifikasi']."png</td>"; }

    };
    echo "</tr>";
?>

它不会停止每5个结果,也不会创建新行。

这就是我要找的:

---------------------------------------------------
A1      |  A2      |   A3      |  A4      |  A5
---------------------------------------------------
A1.png  |  A2.png  |   A3.png  |  A4.png  |  A5.png
---------------------------------------------------
/*this row should be empty for some spacing*/
---------------------------------------------------
.../*skipped till the last row*/
---------------------------------------------------
A21     |  A22      |     A23     |    A24
---------------------------------------------------
A21.png |  A22.png  |     A23.png |    A24.png
---------------------------------------------------

我当前的迭代结果是24个数据。它可能或多或少

注意:

如果可能的话,为空的每列都应该有20%的

2 个答案:

答案 0 :(得分:0)

使用嵌套循环。外循环应该迭代5,内循环得到该组中的5个项目。

$len = count($klasifikasi);
for ($i = 0; $i < $len; $i += 5) {
    echo "<tr>";
    for ($j = $i; $j < $i+5; $j++) {
        if ($j < $len) {
            echo "<td>{$row['klasifikasi']}</td>";
        }
    }
    echo "</tr>";
    echo "<tr>";
    for ($j = $i; $j < $i+5; $j++) {
        if ($j < $len) {
            echo "<td>{$row['klasifikasi']}.png</td>";
        }
    }
    echo "</tr>";
}

答案 1 :(得分:0)

解决问题的简单方法:

    $i = 1;
    $html = "<table border='1'>";

    $row1 = '<tr>';
    $row2 = '<tr>';
    foreach($klasifikasi as $result){
        $row1 .= "<td width='20%' align='center'>".$result['klasifikasi']."</td>";
        $row2 .= "<td width='20%' align='center'>".$result['klasifikasi']."png</td>";

        if($i > 0 && $i % 5 === 0){
            $row1 .= '</tr>';
            $row2 .= '</tr>';
            $html .= $row1.$row2;
            $html .= '<tr><td colspan="5"></td></tr>;

            $row1 = '<tr>';
            $row2 = '<tr>';
        }
        $i++;
    }

    if($i > 0 && $i % 5 !== 1) {
        $html .= $row1.$row2;
    }
    $html .= '</table>';
    echo $html;