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

PHP过滤API返回JSON响应并指定字段输出的问题求助

问题解决:Uncaught TypeError 错误修复及代码优化

错误原因

你用foreach($data as $values)的遍历逻辑完全错了。$data是解析API返回得到的单层关联数组,遍历它时$values会依次拿到每个字段的具体值(比如第一个循环拿到字符串"ACTIVE",第二个是"DEFAULT",第三个是add对应的数组)。这时候你再写$values["status"],相当于给字符串加数组偏移,自然触发类型错误。另外你的echo语法也有问题,多个echo不能用逗号连接。

正确写法

不需要遍历,直接从$data数组里提取指定的三个字段即可:

<?php
$headers = [
    "User-Agent: Test API",
    "token: *my-token*"
];

$accountid = $_POST['accountid'];
$url = "https://my+api+url/$accountid";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
// 用HTTP状态码判断404,比正则匹配更可靠
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// 先校验JSON解析是否成功
$data = json_decode($result, true);
if ($data === null) {
    echo "API响应解析失败";
    exit;
}

if ($httpCode === 404){
    echo "AccountID invalid.";
}
else {
    echo "AccountID valid:\n";
    // 直接提取目标字段输出
    echo "status: " . $data["status"] . "\n";
    echo "modified: " . $data["modified"] . "\n";
    echo "_id: " . $data["_id"] . "\n";
}
?>

额外优化点

  1. 替换404判断逻辑:用curl_getinfo获取HTTP状态码判断404,比正则匹配响应体里的"404"更准确,避免误判场景。
  2. 增加JSON解析校验:json_decode失败会返回null,加判断可以避免后续操作报错。
  3. 修正echo语法:多个输出语句分开写,或用字符串拼接,不要用逗号连接多个echo。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:05:20