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

PHP将JSON输出渲染为HTML表格时出现大量空记录如何解决

原因分析

你当前代码直接遍历JSON解析后的全部数组元素输出表格行,没有对元素的有效字段做非空校验,数组中没有有效内容的元素也会被渲染成空行。

修改方案

在遍历输出表格行的位置增加字段非空判断,仅当字段存在有效内容时才输出行,同时补充JSON解析失败的异常校验,修改后的代码如下:

<?php
$json2 = file_get_contents("****" . $row["Kenteken2"]);
$data2 = json_decode($json2);

// 先校验JSON解析是否成功、且是数组结构
if (json_last_error() === JSON_ERROR_NONE && is_array($data2) && !empty($data2)) {
    // 兼容原有的model存在判断,修复原写法判断对象时报错的问题
    if (isset($data2[0]->model) || strpos(json_encode($data2[0]), 'model') !== false) {
        echo '<h4>Zelfde serie voertuigen</h4>';
        // 打开表格
        echo '<table class="GeneratedTable">';
        echo '<thead><tr><th>Niet DB</th><th>In DB</th></tr></thead><tbody><col style="width:50%" span="2" />';

        // 循环数组
        foreach ($data2 as $vrt) {
            // 新增校验:核心字段至少有一个不为空才输出行,可根据实际业务调整判断条件
            if (
                (isset($vrt->model) && trim($vrt->model) !== '')
                || (isset($vrt->model2) && trim($vrt->model2) !== '')
            ) {
                // 输出行,htmlspecialchars用于避免XSS安全问题,不需要可以删除
                echo '<tr>';
                echo '<td><a href="/****.php?ktk='.htmlspecialchars($vrt->model).'&via=ktk.net/'.htmlspecialchars($row["Kenteken2"]).'&model='.htmlspecialchars($row["MerkModel"]).'" target="_blank">'.htmlspecialchars($vrt->model) .'</a></td>';
                echo '<td><a href="/****.php?ID='.htmlspecialchars($vrt->id).'">'.htmlspecialchars($vrt->model2) .'</a> '.htmlspecialchars($vrt->dienst) . ' ' . htmlspecialchars($vrt->bijzonderheden) .'</td>';
                echo "</tr>";
            }
        }
        // 关闭表格
        echo "</tbody></table>";
    }
}
?>

补充说明

你可以根据实际业务需求调整非空判断的条件,比如要求model和model2同时不为空才输出,或者增加id字段的非空校验,都可以直接在上述判断逻辑里修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:27:05