MapBox方向API请求后,无法解析JSON数组获取路由时长问题
问题分析与解决方案
错误原因
curl_exec返回的是JSON格式的字符串,而非PHP关联数组。直接用数组键访问字符串时,PHP会将字符串当作字符数组处理,非整数的键会被转换为0,因此$response['routes']实际取的是字符串的第一个字符“{”,导致输出不符合预期。
修复步骤
- 完成CURL请求后关闭资源,并检查请求是否存在错误;
- 使用
json_decode()将JSON字符串解码为PHP关联数组(第二个参数传true); - 检查JSON解码是否成功,避免因响应格式异常导致后续出错;
- 从解码后的数组中提取目标数据。
修复后的代码
$response = curl_exec($curl); // 检查CURL请求是否出错 if (curl_errno($curl)) { die('CURL请求错误: ' . curl_error($curl)); } // 关闭CURL资源 curl_close($curl); // 将JSON字符串解码为关联数组 $data = json_decode($response, true); // 检查JSON解码是否成功 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解码错误: ' . json_last_error_msg()); } // 提取duration值 $Duration = $data['routes'][0]['duration']; echo $Duration; // 输出:9875.611
内容的提问来源于stack exchange,提问作者Vogal
相关产品推荐
相关产品推荐

