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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:42:42