You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何从两个数组交替生成每行4个相同元素的<tr>表格

问题描述

我有两个数组:

$arr1 = ['A','B','C'];
$arr2 = [1, 2, 3];

想要实现如下表格效果:

-----------------
| A | A | A | A |
-----------------
| 1 | 1 | 1 | 1 |
-----------------
| B | B | B | B |
-----------------
| 2 | 2 | 2 | 2 |
-----------------
| C | C | C | C |
-----------------
| 3 | 3 | 3 | 3 |
-----------------

但我尝试的代码输出不符合预期,代码如下:

<?php
$arr1= ['A','B','C'];
$arr2=[1, 2, 3];
$combine = array_combine($arr1, $arr2);

echo "<table>
";
foreach ( $combine as $i => $a) {
    echo "<tr>
";
    for ($j=0; $j < 4 ; $j++) { 
  if ( $a % 4 == 0) {
    echo "</tr>
  <tr>
";
  }
  echo "<th>$i</th>
";
  echo "<td>$a</td>
";
  }
  echo "</tr>
";
}

echo "</table>
";

?>
问题分析

你的代码存在几个关键问题:

  • 使用array_combine后,每次循环会同时处理$arr1的元素(键)和$arr2的元素(值),但你在内部循环里同时输出<th>和<td>,导致一行里同时出现字母和数字,不符合每行只显示单一元素的需求。
  • 内部的if ($a % 4 == 0)判断完全无效,因为$a的值是1、2、3,永远不会被4整除,这个逻辑是多余的。
  • 错误混用了<th>和<td>标签,需求里每行都是相同的内容,不需要区分表头和普通单元格。
解决方案

不需要合并数组,直接遍历两个数组的索引,对每个索引分别生成两行:一行是$arr1对应元素重复4次,另一行是$arr2对应元素重复4次。同时添加CSS样式,让表格呈现你需要的分隔线效果。

修正后的代码:

<?php
$arr1 = ['A','B','C'];
$arr2 = [1, 2, 3];
// 获取数组长度,假设两个数组长度一致
$length = count($arr1);
?>
<style>
table {
    border-collapse: collapse;
    border: 1px solid #000;
}
td {
    border: 1px solid #000;
    padding: 0 10px;
}
</style>
<table>
<?php for ($i = 0; $i < $length; $i++): ?>
    <!-- 输出arr1当前元素的行 -->
    <tr>
        <?php for ($j = 0; $j < 4; $j++): ?>
            <td><?php echo $arr1[$i]; ?></td>
        <?php endfor; ?>
    </tr>
    <!-- 输出arr2当前元素的行 -->
    <tr>
        <?php for ($j = 0; $j < 4; $j++): ?>
            <td><?php echo $arr2[$i]; ?></td>
        <?php endfor; ?>
    </tr>
<?php endfor; ?>
</table>
效果说明

这段代码会生成符合你需求的表格:

  • 每一行包含4个相同的元素,交替显示$arr1和$arr2的对应项。
  • CSS样式让表格的边框和单元格边框显示为实线,模拟你给出的文本表格效果。

内容的提问来源于stack exchange,提问作者Mon Freecs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:55:20