如何从Coinspot API获取比特币最新last价格?解决未定义索引错误
解决"未定义索引"错误,正确获取比特币的last价格
你遇到的问题核心是访问的索引路径不对,先拆解下你提供的JSON结构就能明白问题所在:
{"status":"ok","prices":{"btc":{"bid":"15500","ask":"15600","last":"15600"},"ltc":{"bid":"255.51","ask":"31.434513687425632","last":"274.99"},"doge":{"bid":"0.011001","ask":"0.0112","last":"0.011"}}}
可以看到,last这个键并不是直接在JSON的根节点下,而是嵌套在prices -> btc这个层级里的。你原来的代码直接写$json["last"],自然找不到这个索引,就会抛出"未定义索引"的错误。
正确的PHP代码实现
<?php // 获取API数据 $url = "https://www.coinspot.com.au/pubapi/latest"; $getContent = file_get_contents($url); // 先校验是否成功获取到内容 if (!$getContent) { echo "无法获取API数据,请检查网络或地址"; exit; } // 将JSON解析为关联数组 $json = json_decode($getContent, true); // 多一层校验,避免解析失败或数据结构异常 if ($json && $json["status"] === "ok" && isset($json["prices"]["btc"]["last"])) { // 按照正确的嵌套路径访问last价格 echo "比特币当前last价格:" . $json["prices"]["btc"]["last"]; } else { echo "数据解析失败或未找到比特币的last价格"; } ?>
关键要点
- 必须匹配JSON的层级结构:通过
$json["prices"]["btc"]["last"]一步一步从根节点往下定位到目标值。 - 增加了
isset()判断和内容获取校验,能避免因为API返回异常、网络问题导致的额外报错,让代码更健壮。
内容的提问来源于stack exchange,提问作者Rosco verheij
相关产品推荐
相关产品推荐

