получить информацию API в PHP

1

Я хочу сделать конвертер валют в php с использованием fixer.io api с использованием mysql на данный момент это мой код

$ch = curl_init();
$url ='http://api.fixer.io/latest';
curl_setopt($ch, CURLOPT_URL, $url);


$json= curl_exec($ch);
curl_close($ch);
$data = json_decode($json);

foreach ($data as $rate){

    $AUD = $rate->AUD;
    $BGN = $rate->BGN;
    $BRL = $rate->BRL;
    $CAD = $rate->CAD;
    $CHF = $rate->CHF;
    $CNY = $rate->CNY;
    $CZK = $rate->CZK;
    $DKK = $rate->DKK;
    $GBP = $rate->GBP;
}

json выглядит, когда я var_dump ($ data)

{
    "base": "EUR",
    "date": "2016-05-23",
    "rates": {
        "AUD": 1.5542,
        "BGN": 1.9558,
        "BRL": 3.9832,
        "CAD": 1.4745,
        "CHF": 1.1105,
        "CNY": 7.3507,
        "CZK": 27.033,
        "DKK": 7.4371,
        "GBP": 0.77443,
        "HKD": 8.7104,
        "HRK": 7.489,
        "HUF": 317.05,
        "IDR": 15232.77,
        "ILS": 4.3459,
        "INR": 75.7263,
        "JPY": 122.7,
        "KRW": 1329.78,
        "MXN": 20.6021,
        "MYR": 4.5816,
        "NOK": 9.3658,
        "NZD": 1.6538,
        "PHP": 52.481,
        "PLN": 4.4367,
        "RON": 4.521,
        "RUB": 75.2277,
        "SEK": 9.344,
        "SGD": 1.5478,
        "THB": 39.993,
        "TRY": 3.3495,
        "USD": 1.1215,
        "ZAR": 17.5173
    }
}
int(1))

Я хочу использовать ставки и поместить их в mysql. мой вопрос, как вы получаете ставки allone, когда я использую foreach, я получаю

Предупреждение: неверный аргумент, предоставленный foreach() в \index.php в строке 12

другой вопрос, который я не понимаю, откуда пришел int (1) в json (если я прокомментирую foreach, я показываю, как показано здесь, но если я раскомментирую его, он будет показан под предупреждением

Как я могу это решить? Любая помощь приветствуется!

  • 0
    Вы декодируете это как stdClass, и обрабатываете результат декодирования как ассоциативный массив. Если вы хотите ассоциативный массив, используйте json_decode($json, true); ,
  • 0
    пробовал, что изменило $ data = json_decode ($ json); в $ data = json_decode ($ json, true); получил тот же массаж
Теги:
curl

2 ответа

1

Вам не нужен foreach цикл, там только один rates элемента в ответ. Так оно и есть:

$rates = $data->rates;
$AUD = $rates->AUD;
$BGN = $rates->BGN;
...
0

вам не хватает иерархии внутри полезной нагрузки json.

$data = json_decode($json);
foreach($data->rates as $key=>$value){     // get to the rates array
  $$key = $value;
}

Это создает на лету var с именем AUD для ключа AUD и т.д. Однако я бы выбрал другой подход, вы могли бы иметь недопустимые ключи в полезной нагрузке и терпеть неудачу молча.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню