利用模運算子 % 判斷奇偶行,每兩筆資料換行:
<table width="100%" border="0" cellspacing="1" cellpadding="0" style="background:#CCC">
<tr>
<td align="center" bgcolor="#FFFFFF">第一欄</td>
<td align="center" bgcolor="#FFFFFF">第二欄</td>
</tr>
<tr>
<?php
$setarr = range(0, 9); // 模擬資料庫查詢結果
$i = 0;
foreach ($setarr as $val) {
$i++;
echo "<td align='center' bgcolor='#FFFFFF'>{$val}</td>";
// 每 2 筆換行,但最後一行不補空白欄
if ($i % 2 == 0 && $i < count($setarr)) {
echo '</tr><tr>';
}
}
?>
</tr>
</table>
若資料來源為字串,需先用 explode() 轉為陣列:
<?php
$str = "Hello world. It's a beautiful day.";
$words = explode(" ", $str); // 以空格分割
print_r($words);
/* 輸出:
Array (
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)
*/
?>
接著套用上述雙欄邏輯即可。
若需求「每行必須滿兩欄」,最後不足時補上空白 <td></td>:
$total = count($data);
$cols = 2;
for ($i = 0; $i < $total; $i++) {
if ($i % $cols === 0) echo '<tr>';
echo "<td>{$data[$i]}</td>";
if ($i % $cols === $cols - 1 || $i === $total - 1) {
// 最後一行補齊
$remainder = ($i + 1) % $cols;
if ($remainder !== 0) {
echo str_repeat("<td></td>", $cols - $remainder);
}
echo '</tr>';
}
}
現代前端建議使用 CSS Flexbox 或 Grid 實現響應式多欄佈局,PHP 僅輸出扁平列表,由前端控制換行,分離關注點更清晰。