PHP提取Dogecoin地址余额JSON数据失败求助
解决Dogecoin地址余额API提取无输出问题
首先,咱们先揪出你代码里最显眼的错误——你用了一个根本不存在的json()函数来取余额!咱们已经用json_decode把API返回的JSON转成关联数组了,直接从数组里按键取值就好啦。
修正后的可运行代码
<?php $url = "https://dogechain.info/api/v1/address/balance/DMr3fEiVrPWFpoCWS958zNtqgnFb7QWn9D"; // 先获取API返回的原始数据 $response = file_get_contents($url); // 第一步:检查是否成功拿到API响应 if ($response === false) { die("无法连接到API,请检查网络或URL正确性"); } // 把JSON转成PHP关联数组 $json = json_decode($response, true); // 第二步:验证数据有效性 if ($json === null || !isset($json['success']) || $json['success'] != 1 || !isset($json['balance'])) { die("API数据解析失败或返回格式异常"); } // 正确提取balance字段 $balance = $json['balance']; echo "当前Dogecoin余额: " . $balance; ?>
详细说明问题点和优化项
- 核心语法错误修正:把错误的
json("balance")改成$json['balance'],因为json_decode(..., true)返回的是关联数组,直接通过键名访问对应值即可。 - 新增错误处理逻辑:
- 先判断
file_get_contents是否成功获取到响应,避免后续操作空数据导致静默失败。 - 检查
json_decode是否成功(如果JSON格式错误会返回null),同时验证API返回的success状态,确保拿到的是有效数据。
- 先判断
- 兼容禁用
allow_url_fopen的环境:如果你的PHP服务器禁用了allow_url_fopen,file_get_contents无法访问外部URL,这时候可以改用cURL请求,示例代码如下:
<?php $url = "https://dogechain.info/api/v1/address/balance/DMr3fEiVrPWFpoCWS958zNtqgnFb7QWn9D"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); if ($response === false) { die("cURL请求API失败"); } $json = json_decode($response, true); if ($json === null || !isset($json['success']) || $json['success'] != 1 || !isset($json['balance'])) { die("API数据解析失败"); } $balance = $json['balance']; echo "当前Dogecoin余额: " . $balance; ?>
这样修改后,不仅能正确提取余额,还能在出现问题时给出明确的错误提示,方便你排查问题~
内容的提问来源于stack exchange,提问作者natasha krishnan
相关产品推荐
相关产品推荐

