簡體   English   中英

在PHP中訪問JSON對象,數組對象中的值

[英]Accessing values in a JSON object, array object in PHP

查看以下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匯率中的Label /值。 我認為這是由於對象位於響應的對象設置中的數組中引起的嗎?

我試過了:

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”部分中的不同貨幣條目和值(USD EUR等)的最簡單方法是什么?

這是我的第一篇文章,我嘗試查找類似的示例,但是有很多但找不到解決此“嵌套”問題的解決方案,因為這些示例都沒有與此相關的任何線索。

json_decode使用第二個參數將json解碼為數組,

那么您將可以正常訪問它,如下所示:

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

訪問名稱為數字的對象屬性時,必須將其放在{}之間。 所以:

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

干得好:

$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)
  }
}

遍歷上面JSON的“ 4”部分中的不同貨幣條目和值(USD EUR等)的最簡單方法是什么?

可以像這樣遍歷匯率,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM