反序列化JSON响应(PHP)
我想在加载页面时打印从site+测试的JSON响应中获得的硬币名称;问题是,只有测试被打印出来,好像它没有找到硬币的名字 PHP代码:反序列化JSON响应(PHP),php,json,json-deserialization,Php,Json,Json Deserialization,我想在加载页面时打印从site+测试的JSON响应中获得的硬币名称;问题是,只有测试被打印出来,好像它没有找到硬币的名字 PHP代码: <?php $coinbase = "https://api.coinmarketcap.com/v1/ticker"; $array = array("/bitcoin","/ethereum"); find(); function find(){ $coin = file_get_conte
<?php
$coinbase = "https://api.coinmarketcap.com/v1/ticker";
$array = array("/bitcoin","/ethereum");
find();
function find(){
$coin = file_get_contents($GLOBALS["coinbase"].$array[1]);
$coin = json_decode($coin, TRUE);
$v = $coin['name']."test";
echo $v;
}
?>
尝试:
这个json是一个对象数组,因此您应该首先访问数组的索引,然后访问对象的属性
编辑
尝试硬编码url以测试它。如果我这样尝试,我会得到答案。我打印了$coin,以便于您清楚地了解如何轻松访问索引为0的2D阵列 这就是你想要的 注:请注意这里的评论 $array在函数find中不可访问。了解变量范围 在PHP中,然后忘记关于$GLOBALS或global的一切 根据评论:
您的有效负载是数组类型。例如,要检索第一个元素,需要类似$coin[0]['name']的内容。在函数find中无法访问$array。阅读关于然后忘记关于$GLOBALS或global的一切。我已经尝试过做$coin[0]['name'],但它不起作用。我还要求您阅读PHP中的变量范围,因为@axiac之前评论过$coin变量是空的吗?如果没有,你能在尝试json解码之前和之后粘贴var_dump$coin吗?在boolfalse之前,在null之后这就是问题所在。如果找不到资源,则file_get_contents返回false,因此请尝试修改url。url正确,coinbase=array[1]=/ethereum,站点正确@being sunny是对的,可能错误是您试图访问函数内的$array。已测试,但无法工作。我不知道该怎么办。你运行我的代码片段了吗@先生,我得到了想要的结果,那么你没有得到吗?可能是文件内容无法为您获取数据。@MONS7ER清楚地看到,在我的代码段中,我已将$coinbase和$array变量设置为本地变量。在您的情况下,$array&$coinbase在函数find中不可访问,所以请检查它carefully@MONS7ER我看到你抓拍了,你在使用变量$coinbase和$array之前没有清除它。这就是为什么我告诉你要仔细查看我的代码片段。为了便于使用,我只是将全局变量设置为局部变量,但您完全删除了它:我也不能在函数中运行它,而将其完全保留为全局变量,等等。还是我错了?
[
{
id: "bitcoin-cash",
name: "Bitcoin Cash",
symbol: "BCH",
rank: "4",
price_usd: "1042.72",
price_btc: "0.114721",
24h_volume_usd: "462221000.0",
market_cap_usd: "17742232718.0",
available_supply: "17015338.0",
total_supply: "17015338.0",
max_supply: "21000000.0",
percent_change_1h: "1.59",
percent_change_24h: "-4.49",
percent_change_7d: "-14.31",
last_updated: "1520950752"
}
]
$coin = file_get_contents($GLOBALS["coinbase"].$array[1]);
$coin = json_decode($coin, TRUE);
$v = $coin[0]['name']."test";
echo $v;
$coin = file_get_contents("https://api.coinmarketcap.com/v1/ticker/ethereum");
function find()
{
$coinbase = "https://api.coinmarketcap.com/v1/ticker";
$array = array("/bitcoin","/ethereum");
$coin = file_get_contents($coinbase.$array[1]);
$coin = json_decode($coin, TRUE);
//printing only for debug purpose
print '<pre>';
print_r($coin);
print '<pre>';
$v = $coin[0]['name']."test";
echo $v;
}
find();
Array
(
[0] => Array
(
[id] => ethereum
[name] => Ethereum
[symbol] => ETH
[rank] => 2
[price_usd] => 687.193
[price_btc] => 0.0760364
[24h_volume_usd] => 1696390000.0
[market_cap_usd] => 67457446384.0
[available_supply] => 98163757.0
[total_supply] => 98163757.0
[max_supply] =>
[percent_change_1h] => -0.63
[percent_change_24h] => -2.36
[percent_change_7d] => -16.98
[last_updated] => 1520955853
)
)
Ethereumtest
$coinbase = "https://api.coinmarketcap.com/v1/ticker";
$array = array("/bitcoin","/ethereum");
function find(){
global $coinbase;
global $array;
$coin = file_get_contents($coinbase.$array[1]);
$coin = json_decode($coin, TRUE);
print '<pre>';
print_r($coin);
$v = $coin[0]['name']."test";
echo $v;
}
find();