PHP无法从JSON数据渲染HTML表格问题求助
问题分析与解决方案
我来帮你一步步排查和修正表格无数据显示的问题,主要有几个关键错误需要解决:
1. 变量作用域与数据传递问题
你的Req.php和Index.php是两个独立文件,Req.php里的$cocok只是循环临时变量,而且循环没做任何数据存储,Index.php根本无法访问到这个变量。必须让Index.php能获取到Req.php解析后的JSON数据。
2. JSON结构解析错误
你的JSON数据里,所有省份信息都嵌套在attributes字段下,但你在Index.php里直接尝试$cocok[$a]['Provinsi'],这会找不到对应值,正确的访问路径应该是$item['attributes']['Provinsi']。
3. 循环逻辑错误
Index.php的for循环从$a=1开始,但PHP数组索引从0开始,这会漏掉第一条数据;同时你用count($cocok)也不成立,因为$cocok在当前代码中不是有效数组。
修正后的完整代码
第一步:修改Req.php,确保能正确获取并传递数据
<?php // Req.php // 若不需要rec.php可移除,或确保该文件存在 // require('rec.php'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://URL'); // 替换为你的实际接口地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 若遇到HTTPS证书问题,可临时添加以下两行(生产环境请配置合法SSL证书) // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $colek = curl_exec($ch); // 检查curl请求是否成功 if(curl_errno($ch)){ die('Curl请求错误: ' . curl_error($ch)); } curl_close($ch); // 解析JSON数据并检查解析结果 $result = json_decode($colek, true); if(json_last_error() !== JSON_ERROR_NONE){ die('JSON解析失败: ' . json_last_error_msg()); } ?>
第二步:修改Index.php,正确渲染表格数据
<?php // Index.php require('Req.php'); // 先引入Req.php获取解析后的数据 ?> <!DOCTYPE html> <html> <head> <title>省份疫情数据</title> <style> table { border-collapse: collapse; width: 80%; margin: 20px auto; } th, td { border: 1px solid #ddd; padding: 8px; text-align: center; } th { background-color: #f2f2f2; } </style> </head> <body> <table> <tr> <th>No.</th> <th>Provinsi</th> <th>Kasus_Posi</th> <th>Kasus_Semb</th> <th>Kasus_Meni</th> </tr> <?php if(!empty($result)){ $counter = 1; foreach($result as $item){ // 正确访问嵌套在attributes中的字段 $provinsi = $item['attributes']['Provinsi']; $posi = $item['attributes']['Kasus_Posi']; $semb = $item['attributes']['Kasus_Semb']; $meni = $item['attributes']['Kasus_Meni']; ?> <tr> <td><?php echo $counter++; ?></td> <td><?php echo $provinsi; ?></td> <td><?php echo $posi; ?></td> <td><?php echo $semb; ?></td> <td><?php echo $meni; ?></td> </tr> <?php } } else { ?> <tr> <td colspan="5">暂无数据可显示</td> </tr> <?php } ?> </table> </body> </html>
额外提示
- 确保
http://URL是可正常访问的合法JSON接口地址 - 生产环境中不要随意关闭SSL验证,建议配置正确的CA证书
- 代码中添加了错误检查逻辑,方便你快速定位请求或解析环节的问题
内容的提问来源于stack exchange,提问作者Edo Permata
相关产品推荐
相关产品推荐

