无法通过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的
tickerAPI返回结构里,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
相关产品推荐
相关产品推荐

