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

如何将Curl响应生成HTML表格?报错求助

问题分析与修复方案

你的代码存在几个关键错误,导致无法正常生成HTML表格:

核心错误点

  • 变量名不匹配:API返回的JSON解析后存在$json变量,但后续循环却使用了未定义的$data变量
  • 数据结构访问错误:从Curl输出的数组结构来看,航班数据的正确路径是$json['data']['AYT'],而非你写的$data[0]["data"]
  • 缺少完整HTML表格结构:只输出了表格行和单元格,没有外层的<table>标签与表头

修正后的完整代码

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.travelpayouts.com/v1/prices/cheap?origin=SAW&destination=AYT&depart_date=2022-10-26&return_date=2022-10-27&currency=usd",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "x-access-token: xxxxxxxxxxxxxxxxxxxxx"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
    $json = json_decode($response, true);
    // 增加数据有效性校验,避免空数组报错
    if(isset($json['success']) && $json['success'] && isset($json['data']['AYT'])){
        // 输出完整表格框架
        echo '<table border="1">';
        // 表头
        echo '<tr>';
        echo '<th>价格</th>';
        echo '<th>航空公司</th>';
        echo '<th>航班号</th>';
        echo '</tr>';
        // 遍历航班数据生成表格行
        foreach($json['data']['AYT'] as $flight){
            echo '<tr>';
            echo '<td>' . $flight['price'] . '</td>';
            echo '<td>' . $flight['airline'] . '</td>';
            echo '<td>' . $flight['flight_number'] . '</td>';
            echo '</tr>';
        }
        echo '</table>';
    } else {
        echo '未获取到有效航班数据';
    }
}
?>

额外优化说明

  • 使用foreach替代for循环,更适配数组遍历场景,无需手动计算长度
  • 增加数据存在性校验,避免API返回异常时触发报错
  • 补充表格边框与表头,提升表格可读性

内容的提问来源于stack exchange,提问作者İsmet Özdeş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:50:22