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

PHP开发:如何用API返回数据更新对应嵌套数组字段

解决方案:更新航空器数组的经纬度信息

实现步骤

  1. 解析API返回数据:将JSON格式的API响应转换为PHP关联数组,便于后续操作。
  2. 合法性校验:确保JSON解析成功且包含有效的response数组,避免报错。
  3. 匹配并更新数据:遍历API返回的航空器数据,通过注册号(reg_number)匹配本地数组中的对应条目,更新经纬度字段。

完整代码示例

// 原始航空器数组
$aircraft = [
  'N7826C' => ['nnum' => 'N7826C', 'name' => 'ANAHEIM POLICE DEPT', 'icon' => 'police', 'lat' => '', 'lng' => '', 'status' => '0'],
  'N226PD' => ['nnum' => 'N226PD', 'name' => 'ANAHEIM POLICE DEPT', 'icon' => 'police', 'lat' => '', 'lng' => '', 'status' => '0'],
  'N326PD' => ['nnum' => 'N326PD', 'name' => 'CITY OF ANAHEIM', 'icon' => 'police', 'lat' => '', 'lng' => '', 'status' => '0'],
  'N826PD' => ['nnum' => 'N826PD', 'name' => 'CITY OF ANAHEIM', 'icon' => 'police', 'lat' => '', 'lng' => '', 'status' => '0']
];

// 提取注册号列表并请求API
$aircraftNNUMlist = implode(',', array_map(function($v) { return $v['nnum']; }, $aircraft));
$json = file_get_contents('https://airlabs.co/api/v9/flights?_fields=reg_number,lat,lng&reg_number='.$aircraftNNUMlist.'&api_key=XXXXX');

// 处理API请求失败的情况
if ($json === false) {
    error_log('API请求失败');
    // 可添加自定义错误处理逻辑
} else {
    // 解析JSON为关联数组
    $apiData = json_decode($json, true);
    
    // 校验解析结果和response字段有效性
    if ($apiData && isset($apiData['response']) && is_array($apiData['response'])) {
        // 遍历API返回的每个航空器数据
        foreach ($apiData['response'] as $flight) {
            $regNumber = $flight['reg_number'];
            // 检查当前注册号是否存在于本地数组
            if (isset($aircraft[$regNumber])) {
                // 更新经纬度字段
                $aircraft[$regNumber]['lat'] = $flight['lat'];
                $aircraft[$regNumber]['lng'] = $flight['lng'];
            }
        }
    }
}

// 打印更新后的数组(调试用)
// print_r($aircraft);

关键说明

  • 利用$aircraft数组的键(注册号)直接匹配API返回的reg_number,查找效率远高于遍历整个$aircraft数组。
  • 严格的合法性校验可以避免因API返回异常(如JSON格式错误、无数据)导致的脚本报错。
  • 确保API返回的reg_number与本地数组的键完全一致(包括大小写、字符格式),否则无法匹配更新。

内容的提问来源于stack exchange,提问作者user8688718

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:24:19