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

如何使用PHP从JSON数据中提取指定用户名(david)?

解决PHP cURL获取JSON中用户名的问题

我看了你的代码,发现两个关键问题导致你拿不到用户名“david”且无输出:

  • 第一个错误:用反了解析函数:你写了json_encode($response, true),但我们需要把cURL返回的JSON字符串转换成PHP数组/对象,应该用json_decode($response, true)。json_encode是反过来把PHP数据转成JSON字符串的,这会导致后续的数组索引访问完全失效。
  • 第二个错误:cURL的URL为空:CURLOPT_URL => "",这会导致cURL请求根本发不出去,自然没有响应数据。你需要把这里替换成实际的API接口地址。

如果是用你提供的测试JSON数据验证逻辑,我们可以直接把JSON字符串赋值给$response来调试,下面是修正后的完整代码:

<?php 
$curl = curl_init(); 
// 替换成实际的API接口地址
curl_setopt_array($curl, [ 
    CURLOPT_URL => "你的API接口地址", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
]); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    // 用json_decode把JSON字符串转成关联数组,第二个参数true确保转成数组而非对象
    $decodedData = json_decode($response, true); 
    
    // 先检查数据结构是否存在,避免索引不存在报错
    if (isset($decodedData['top_ownerships'][0]['owner']['user']['username'])) {
        $username = $decodedData['top_ownerships'][0]['owner']['user']['username']; 
        echo $username; // 这里会输出david
    } else {
        echo "用户名不存在或数据结构异常";
    }
}

额外建议:

  • 加上isset()检查:避免当API返回的数据结构变化(比如top_ownerships为空)时,出现数组索引未定义的错误,让代码更健壮。
  • 调试时可以先打印$response:确认cURL是否正确获取到了JSON数据,比如在$response = curl_exec($curl);后加var_dump($response);,看看返回的内容是否和你提供的JSON一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:02:37