Разбор JSON с foreach в PHP - PullRequest
       4

Разбор JSON с foreach в PHP

2 голосов
/ 31 марта 2020

Я пытаюсь получить коды валют из этого JSON:

{
    "rates": {
        "CAD": 1.5617,
        "HKD": 8.4945,
        "ISK": 155.6,
        "PHP": 55.865,
        "DKK": 7.4674,
        "HUF": 360.02,
        "CZK": 27.312,
        "AUD": 1.7967,
        "RON": 4.8283,
        "SEK": 11.0613,
        "IDR": 17869.24,
        "INR": 82.8985,
        "BRL": 5.7001,
        "RUB": 85.9486,
        "HRK": 7.6255,
        "JPY": 118.9,
        "THB": 35.925,
        "CHF": 1.0585,
        "SGD": 1.5633,
        "PLN": 4.5506,
        "BGN": 1.9558,
        "TRY": 7.2063,
        "CNY": 7.7784,
        "NOK": 11.51,
        "NZD": 1.8417,
        "ZAR": 19.6095,
        "USD": 1.0956,
        "MXN": 26.1772,
        "ILS": 3.9018,
        "GBP": 0.88643,
        "KRW": 1341.03,
        "MYR": 4.733
    },
    "base": "EUR",
    "date": "2020-03-31"
}

Я знаю, что в Python это будет просто:

for i in rates:
  print(i)

Но в PHP У меня есть проблема с этим. Я пытался с этим:

    $length = count($exchange);
    foreach (range(0, count($exchange)) as $currency) {
        echo $response['rates'][$currency]; 
    }

, но это не работает. Это просто относится к ставкам [0] -> ставкам [33]. Я пытался печатать без смещения, но это тоже не сработало.

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Убедитесь, что вы используете json_decode.

$arr = '{
"rates": {
"CAD": 1.5617,
"HKD": 8.4945,
"ISK": 155.6,
"PHP": 55.865,
"DKK": 7.4674,
"HUF": 360.02,
"CZK": 27.312,
"AUD": 1.7967,
"RON": 4.8283,
"SEK": 11.0613,
"IDR": 17869.24,
"INR": 82.8985,
"BRL": 5.7001,
"RUB": 85.9486,
"HRK": 7.6255,
"JPY": 118.9,
"THB": 35.925,
"CHF": 1.0585,
"SGD": 1.5633,
"PLN": 4.5506,
"BGN": 1.9558,
"TRY": 7.2063,
"CNY": 7.7784,
"NOK": 11.51,
"NZD": 1.8417,
"ZAR": 19.6095,
"USD": 1.0956,
"MXN": 26.1772,
"ILS": 3.9018,
"GBP": 0.88643,
"KRW": 1341.03,
"MYR": 4.733
},
"base": "EUR",
"date": "2020-03-31"
}';

$array = json_decode($arr, true);

foreach ($array["rates"] as $k => $v) {
    echo $k . " => " . $v . "<br>";
}

Выход

Ouput

0 голосов
/ 31 марта 2020

В вашем случае, во-первых, вам необходимо декодировать строку JSON :

$json_array = json_decode($json_string, true);

после того, как вы будете использовать только ставки с:

$rates = $json_array['orders'];

после того, как вы сможете l oop через его пункты с foreach:

foreach ($rates as $rate) {
   echo $rate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...