我有一个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%的
答案 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;