如何将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¤cy=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ş
相关产品推荐
相关产品推荐

