如何遍历嵌套数组?PHP中访问JSON嵌套数组内ProductResults的实现问题
解决JSON数组访问与格式化输出问题
看起来你卡在了多层嵌套数组的遍历上,咱们一步步来理清楚问题并修正代码:
问题根源
你的PHP代码里忽略了两个关键的数组层级:
FinanceProductResults是数组类型(不是单个对象),所以直接取$data['Term']会触发错误,因为你不能直接从数组里拿关联键值;- 你还没深入到
ProductResults这一层,而这正是你要提取Type和Payment的地方。
修正后的PHP代码
$json = json_decode($resp, true); // 遍历车辆结果(即使只有1条数据,保持代码通用性) foreach ($json['VehicleResults'] as $vehicle) { // 遍历每个金融方案组(对应不同Term的方案) foreach ($vehicle['FinanceProductResults'] as $financePlan) { $currentTerm = $financePlan['Term']; // 遍历当前Term下的所有产品类型(HP/PCP) foreach ($financePlan['ProductResults'] as $product) { $productType = $product['Key']; $paymentAmount = $product['Payment']; // 按你需要的格式输出 echo "Term: {$currentTerm}, Type:{$productType}, Payment: {$paymentAmount} "; } } }
代码逻辑说明
- 第一层循环:处理
VehicleResults数组里的车辆条目(你的JSON里只有1条,但代码兼容多条的情况); - 第二层循环:针对每个车辆的
FinanceProductResults,拿到对应的Term值; - 第三层循环:遍历该Term下的
ProductResults,提取产品类型(Key)和月供(Payment),然后拼接成你要的格式输出。
实际输出结果
运行这段代码后,会得到:
Term: 47, Type:HP, Payment: 229.4 Term: 47, Type:PCP, Payment: 172.23 Term: 60, Type:HP, Payment: 186.82
(注:你期望的输出里Term60的Type是PCP,但你的JSON数据里该Term下只有HP类型,所以实际输出是HP,这是数据本身的差异)
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

