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

PHP从JSON数据生成双列表格失败问题咨询

问题排查与修正方案

你的核心问题在于表格行(<tr>)的开闭逻辑搞反了,咱们一步步拆解问题并修正:

原代码的逻辑错误

当前你判断$count % 2 == 0时才开启<tr>,但第一个元素的$count是1(奇数),这时候不会生成<tr>,直接输出<td>;第二个元素$count=2(偶数),才生成<tr>,然后输出第二个<td>,紧接着就闭合</tr>——这就导致每个<td>都被单独套进了一行,完全不符合双列的需求。

修正后的代码

function generateHtml($jsonDoc){
  $html = "";
  $html .= "<table>";
  $count = 0;
  foreach ($jsonDoc as $key => $value) {
    $count ++;
    // 当是奇数位元素时,开启新行
    if ($count % 2 == 1) $html .= "<tr>";
    
    $html .= "<td>";
    foreach ($value as $key => $val) {
      if(!empty($val)) $html .= $key.":".$val."<br />";
    }
    $html .= "</td>";
    
    // 当是偶数位元素时,闭合当前行
    if ($count % 2 == 0) $html .= "</tr>";
  }
  // 处理数组元素个数为奇数的情况,补全未闭合的行标签
  if ($count % 2 == 1) $html .= "</tr>";
  
  $html .= "</table>";
  print($html);
}

关键改动说明

  1. 行开启条件调整:把<tr>的生成条件改成$count % 2 == 1(奇数位元素),这样第一个元素就会先开启一行,再输出第一个<td>。
  2. 行闭合逻辑保留:偶数位元素输出<td>后立即闭合</tr>,刚好形成一行两列的结构。
  3. 奇数元素补全处理:如果JSON数组的元素个数是奇数(比如3个),循环结束后最后一行只开了<tr>没闭合,所以加个判断补全</tr>,避免HTML结构错误。

用你的测试JSON数据运行这段代码,就能得到你期望的双列表格输出啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:47:44