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

使用Curl获取Fake API数据后用foreach遍历报类型错误求助

问题原因及修复方案

错误根源

你的代码中curl_exec($curl)默认会直接把API响应输出到页面,而非将内容返回给$response变量。此时$response的值是布尔值true(对应int类型的1),经过json_decode后得到null,强制转数组后变成[1]。foreach循环时$value是整数1,尝试访问$value['userId']这类数组键就会触发「Trying to access array offset on value of type int」错误。

修复步骤

  1. 添加CURLOPT_RETURNTRANSFER选项:让curl_exec返回响应内容,而非直接输出
  2. 增加错误处理:检查curl请求、JSON解码是否成功,避免后续逻辑出错

修复后的代码:

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://jsonplaceholder.typicode.com/albums",
    CURLOPT_CUSTOMREQUEST => 'GET',
    // 关键配置:让curl返回响应内容
    CURLOPT_RETURNTRANSFER => true
));

$response = curl_exec($curl);
// 检查curl请求是否失败
if(curl_errno($curl)){
    echo 'Curl错误:' . curl_error($curl);
    curl_close($curl);
    exit;
}
curl_close($curl);

// 检查JSON解码是否正常
$values = json_decode($response, true);
if(json_last_error() !== JSON_ERROR_NONE){
    echo 'JSON解码失败:' . json_last_error_msg();
    exit;
}

// 确认是数组后再循环遍历
if(is_array($values)){
    foreach ($values as $value){
        echo $value['userId']."<br>";
        echo $value["id"]."<br>";
        echo $value["title"]."<br><br>";
    }
}
?>

额外说明

  • CURLOPT_RETURNTRANSFER是curl获取响应内容的核心配置,必须添加
  • 错误处理能帮你快速定位请求或解码环节的问题,避免无意义的后续报错
  • 无需对$values强制转数组,先通过is_array()判断更安全

内容的提问来源于stack exchange,提问作者Reza Movahhedy Nasab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:34