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

PHP如何访问多维关联数组?CURL返回JSON数据取值报错解决

问题分析与解决方案

你遇到的核心问题是**$result是JSON格式的字符串,而非PHP可直接操作的数组/对象**,所以直接用数组索引访问或者foreach遍历自然会报错。下面一步步帮你解决:

1. 先把JSON字符串转为PHP数组

curl请求返回的$curl_response是纯文本的JSON字符串,你需要用json_decode()函数把它转换成PHP的关联数组(或者对象),这样才能正常访问里面的元素。

修改你的代码,在$result = $curl_response;这一行之后加上转换代码:

// 把JSON字符串转为关联数组,第二个参数true是关键
$result_array = json_decode($result, true);

// 如果转换失败,可以加个判断(可选)
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析失败: " . json_last_error_msg());
}

2. 正确访问元素的方式

现在$result_array是标准的PHP关联数组了,你可以通过以下两种方式获取数据:

方式一:直接访问单个元素

比如要获取第一个价格项的信息:

// 第一个price的价格
echo $result_array['price'][0]['price']; // 输出2000
// 第一个price的来源地
echo $result_array['price'][0]['origin_name']; // 输出JPN

// 第二个price的价格
echo $result_array['price'][1]['price']; // 输出5000
// 第二个price的来源地
echo $result_array['price'][1]['origin_name']; // 输出USA

方式二:用foreach遍历所有元素

如果你要批量处理所有price项,用foreach遍历$result_array['price']即可:

foreach($result_array['price'] as $item){
    echo "价格:" . $item['price'] . ",来源:" . $item['origin_name'] . "<br>";
}

这段代码会输出:

价格:2000,来源:JPN
价格:5000,来源:USA

为什么你的之前代码会报错?

你之前直接用$result['price'],但$result是字符串类型,PHP会把字符串当成字符数组来处理,'price'作为偏移量是非法的,所以会抛出Illegal string offset 'price'的警告;而foreach需要传入数组/可遍历对象,传入字符串自然会触发Invalid argument supplied for foreach()错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:29:53