如何使用PHP和Curl遍历TransportAPI返回的JSON数据?
解决Transport API返回JSON结果的循环遍历问题
嘿,我来帮你搞定这个循环遍历Transport API返回结果的问题!先把你的代码补全优化,再教你怎么遍历所有结果:
首先,先把你的curl请求代码补完整,确保能正确获取并解码JSON数据:
$url = "https://transportapi.com/v3/uk/train/station/eus/2018-04-15/13:38/timetable.json?app_id=*****&app_key=*****&destination=LIV&train_status=passenger"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 关键配置:让curl返回结果而非直接输出 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 若遇SSL验证问题可临时添加,生产环境建议开启验证 $response = curl_exec($curl); curl_close($curl); // 将JSON响应解码为PHP关联数组 $timetableData = json_decode($response, true);
接下来,你需要先明确API返回的JSON结构。通常Transport API的时刻表结果中,出发班次会嵌套在departures字段下。假设我们要遍历所有符合条件的班次,可以这样做:
// 先检查目标数组是否存在,避免报错 if (isset($timetableData['departures']['all'])) { // 用foreach循环遍历所有班次数据 foreach ($timetableData['departures']['all'] as $train) { // 打印每个班次的核心信息,你可以根据需求调整字段 echo "车次编号: " . $train['train_uid'] . "\n"; echo "计划出发时间: " . $train['departure_time'] . "\n"; echo "目的地: " . $train['destination_name'] . "\n"; echo "-------------------------\n"; } } else { echo "未找到可用的班次数据"; }
实用小技巧:
- 你可以先执行
var_dump($timetableData)打印整个解码后的数组,直观查看API返回的结构,确认要遍历的数组键名(比如可能是departures['national_rail']而非all,取决于API返回格式) - 如果需要打印更详细的字段,直接在循环中调用对应的键名即可,无需打印整个条目
内容的提问来源于stack exchange,提问作者jwiseman
相关产品推荐
相关产品推荐

