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
相关产品推荐
相关产品推荐

