如何从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>
代码说明:
- 作用域处理:把
$json作为参数$cryptoData传给函数,让函数内部能正常访问到API返回的币种数据 - 数组访问:用
$item['id']和$item['price_usd']来访问数组元素,和json_decode的返回类型完全匹配 - 函数返回值:函数找到对应币种后返回价格,没找到返回提示文本,让你能在HTML里灵活控制输出
- 容错处理:用
??运算符处理可能的空值情况(比如API返回的某个币种没有price_usd字段) - 拼写修正:把调用时的
etheruem改成了正确的ethereum
这样运行代码就能正常显示比特币和以太坊的USD价格啦!
内容的提问来源于stack exchange,提问作者Trent
相关产品推荐
相关产品推荐

