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

如何从CoinMarketCap API获取比特币与以太坊的price_usd值

如何通过自定义函数从CoinMarketCap API获取指定币种的USD价格

我看了你写的代码,里面有几个小问题导致它没法正常工作,咱们一步步来修正:

先说说原代码的问题点:

  • 变量作用域问题:你在函数外面定义的$json,函数内部默认是访问不到的——PHP函数有自己的独立作用域,除非你把它作为参数传进去,或者声明为全局变量(更推荐传参的方式,代码更健壮)
  • 循环语法错误:foreach($json[] as $item)这里多了个[],应该直接遍历$json数组本身
  • 数据类型不匹配:你用json_decode($fgc, TRUE)把JSON转成了关联数组,但代码里却用对象的方式$item->id访问,应该改成数组索引$item['id']
  • 函数设计不够灵活:原函数直接echo价格,最好改成返回价格值,这样你可以在需要的地方输出,或者把值存起来做其他处理
  • 拼写错误:调用的时候写的"etheruem",正确的币种id是"ethereum"

修正后的完整代码

<?php
// 先获取API数据并转成关联数组
$url = "https://api.coinmarketcap.com/v1/ticker/";
$fgc = file_get_contents($url);
$json = json_decode($fgc, TRUE);

// 自定义函数:传入币种id和API数据,返回对应的USD价格
function getCryptoPrice($ticker, $cryptoData) {
    // 遍历所有币种数据
    foreach($cryptoData as $item) {
        // 匹配目标币种的id
        if($item['id'] == $ticker) {
            // 返回价格,用??处理可能的空值情况
            return $item['price_usd'] ?? '未找到该币种价格';
        }
    }
    // 遍历完没找到对应币种时返回提示
    return '未找到该币种';
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Crypto Price Checker</title>
</head>
<body>
    <h3>比特币价格:<?php echo getCryptoPrice("bitcoin", $json);?> USD</h3>
    <h3>以太坊价格:<?php echo getCryptoPrice("ethereum", $json);?> USD</h3>
</body>
</html>

代码说明:

  1. 作用域处理:把$json作为参数$cryptoData传给函数,让函数内部能正常访问到API返回的币种数据
  2. 数组访问:用$item['id']和$item['price_usd']来访问数组元素,和json_decode的返回类型完全匹配
  3. 函数返回值:函数找到对应币种后返回价格,没找到返回提示文本,让你能在HTML里灵活控制输出
  4. 容错处理:用??运算符处理可能的空值情况(比如API返回的某个币种没有price_usd字段)
  5. 拼写修正:把调用时的etheruem改成了正确的ethereum

这样运行代码就能正常显示比特币和以太坊的USD价格啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:57:56