【问题标题】:Accessing values in a JSON object, array object in PHP访问 JSON 对象中的值,PHP 中的数组对象
【发布时间】:2017-03-12 21:01:32
【问题描述】:

查看以下 JSON 字符串时:

$string = '{"data":{"exchange_rates":{"2":[{"cryptoCurrency":"BTC","rateForCashCurrency":{"EUR":1273.261000,"USD":1358.5694870000000000}}],"4":[{"cryptoCurrency":"BTC","rateForCashCurrency":{"EUR":1033.839000,"USD":1103.1062130000000000}}]}},"message":null,"status":"ok"}';

我可以使用以下方法访问 php 中状态键的值:

 $rates_o=json_decode($string);
 echo $rates_o->status; (using the example string above result is "ok")

我完全迷失的是如何在上面的 JSON 中访问 exchange_rates "4" EUR 和 USD 汇率中的标签 / 值。我认为这是因为对象位于响应的对象设置中的数组中?

我试过了:

print_r($rates_o->data->exchange_rates->4[0]); 

但在 PHP 中出现解析错误:

PHP Parse error:  syntax error, unexpected '4' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'

在上述 JSON 的“4”部分中循环遍历不同货币条目和值(美元欧元等)的最简单方法是什么?

这是我的第一篇文章,我尝试找到类似的示例,但有很多但找不到解决这个“嵌套”问题的方法,因为没有一个示例对此有任何线索。

【问题讨论】:

  • 未经测试:$rates_o->data->exchange_rates->{4}[0] 应该可以工作
  • 对其进行了测试。工作。

标签: php arrays json


【解决方案1】:

json_decode 采用第二个参数将您的 json 解码为数组,

那么你就可以正常访问了,如下:

$rates_o=json_decode($string, true);
print_r($ar['data']['exchange_rates'][4][0]);

【讨论】:

    【解决方案2】:

    访问名称为数字的对象属性时,必须将其放在 {} 之间。所以:

    print_r($data->data->exchange_rates->{4}[0]);
    

    【讨论】:

      【解决方案3】:

      在上述 JSON 的“4”部分中循环遍历不同货币条目和值(美元欧元等)的最简单方法是什么?

      可以像这样循环汇率,

      $x=array('EUR','USD');
      foreach($x as $v)
          echo $rates_o->data->exchange_rates->{4}[0]->rateForCashCurrency->$v . PHP_EOL;
      

      【讨论】:

        【解决方案4】:

        给你:

        $string = '{"data":{"exchange_rates":{"2":[{"cryptoCurrency":"BTC","rateForCashCurrency":{"EUR":1273.261000,"USD":1358.5694870000000000}}],"4":[{"cryptoCurrency":"BTC","rateForCashCurrency":{"EUR":1033.839000,"USD":1103.1062130000000000}}]}},"message":null,"status":"ok"}';
        $rates_o = json_decode($string);
        var_dump($rates_o->data->exchange_rates->{4}[0]);
        

        ->

        object(stdClass)#4 (2) {
          ["cryptoCurrency"]=>
          string(3) "BTC"
          ["rateForCashCurrency"]=>
          object(stdClass)#5 (2) {
            ["EUR"]=>
            float(1033.839)
            ["USD"]=>
            float(1103.106213)
          }
        }
        

        【讨论】:

          猜你喜欢
          • 2021-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-10
          • 1970-01-01
          相关资源
          最近更新 更多