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

无法通过PHP CURL访问Koinex API返回的多维JSON数组值

解决Koinex行情API返回值无法访问的问题

看起来你遇到的核心问题是没有将CURL获取到的JSON字符串转换为PHP可操作的数组/对象——CURL默认返回的是原始JSON文本,直接用数组下标访问肯定会出错。下面是具体的解决步骤和说明:

1. 修正代码:添加JSON解码关键步骤

在获取CURL响应后,必须用json_decode()函数将JSON字符串转换为PHP关联数组(传入第二个参数true),这样才能通过键值正确访问数据:

<?php
$getCurrency = "inr";
$displayArrayOutput = true;

// Get cURL resource
$curl = curl_init();

// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://koinex.in/api/ticker',
    CURLOPT_USERAGENT => 'Some User Agent'
));

// Execute the request and get response
$response = curl_exec($curl);
// Check for cURL errors
if(curl_errno($curl)){
    die('Curl error: ' . curl_error($curl));
}
// Close cURL resource
curl_close($curl);

// 关键:将JSON字符串转为PHP关联数组
$responseData = json_decode($response, true);

// 调试用:打印完整结构,方便你查看层级关系
if($displayArrayOutput){
    echo "<pre>";
    print_r($responseData);
    echo "</pre>";
}

// 正确访问示例:获取BTC的INR价格
if(isset($responseData['prices']['BTC'])){
    echo "当前BTC的INR价格:" . $responseData['prices']['BTC'];
}
?>

2. 原访问方式无效的原因

  • 你原代码中的$response是纯JSON字符串,不是数组,所以$response[0][0][1]这种下标访问完全不适用;
  • 即使你误打误撞完成了解码,Koinex的ticker API返回结构里,prices下的BTC对应直接是价格字符串(而非数组),所以$response['prices']['BTC'][0]只会取到价格字符串的第一个字符,而非你预期的完整价格值。

3. 实用调试技巧

如果你不确定返回数据的层级结构,一定要先通过print_r()或var_dump()打印转换后的完整数组,这样就能清晰看到所有键和嵌套关系,避免盲目猜测下标出错。比如打印后你会看到类似这样的简化结构:

Array
(
    [stats] => Array(...)
    [prices] => Array
        (
            [BTC] => 450000.00
            [ETH] => 32000.00
            ...
        )
    [volumes] => Array(...)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:30:24