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

如何从PHP cURL请求返回结果中提取指定字段值?

解决PHP cURL返回JSON后无法取值的问题

哦,这个问题我之前也碰到过!原因很简单——你用curl_exec拿到的$resp其实是一串JSON格式的字符串,不是PHP能直接操作的数组或对象。当你直接用$resp["new-files"][0]["item"]去访问时,PHP会把它当成字符串的字符索引来处理,自然就只输出了JSON字符串的第一个字符{。

解决这个问题只需要把JSON字符串转换成PHP能识别的数组或对象就行,给你两种常用的方案:

方案1:转成关联数组访问

使用json_decode($resp, true)将JSON字符串转为关联数组,之后就可以用数组索引正常取值了:

$curl = curl_init();
curl_setopt_array($curl, array(
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_URL => 'https://api.envato.com/v1/market/new-files:themeforest,site-templates.json',
 CURLOPT_HTTPHEADER => array('Authorization: Bearer myuniquekeygoeshere')
));
$resp = curl_exec($curl);
curl_close($curl);

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

// 现在可以正常获取目标值了
echo $respArray["new-files"][0]["item"];

方案2:转成对象访问

如果习惯用对象属性的方式访问,可以去掉json_decode的第二个参数,直接转成对象,注意带连字符的键名需要用{"键名"}的形式访问:

$curl = curl_init();
curl_setopt_array($curl, array(
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_URL => 'https://api.envato.com/v1/market/new-files:themeforest,site-templates.json',
 CURLOPT_HTTPHEADER => array('Authorization: Bearer myuniquekeygoeshere')
));
$resp = curl_exec($curl);
curl_close($curl);

// 将JSON字符串转为对象
$respObj = json_decode($resp);

// 访问带连字符的属性需要用花括号包裹键名
echo $respObj->{"new-files"}[0]->item;

额外建议:添加JSON解析错误处理

为了避免API返回异常导致JSON解析失败,建议加上错误检查:

$respArray = json_decode($resp, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo "JSON解析出错:" . json_last_error_msg();
} else {
    echo $respArray["new-files"][0]["item"];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:47:20