反序列化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

我想在加载页面时打印从site+测试的JSON响应中获得的硬币名称;问题是,只有测试被打印出来,好像它没有找到硬币的名字

PHP代码:

<?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();