Я хочу сделать конвертер валют в 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, я показываю, как показано здесь, но если я раскомментирую его, он будет показан под предупреждением
Как я могу это решить? Любая помощь приветствуется!
Вам не нужен foreach
цикл, там только один rates
элемента в ответ. Так оно и есть:
$rates = $data->rates;
$AUD = $rates->AUD;
$BGN = $rates->BGN;
...
вам не хватает иерархии внутри полезной нагрузки json.
$data = json_decode($json);
foreach($data->rates as $key=>$value){ // get to the rates array
$$key = $value;
}
Это создает на лету var с именем AUD для ключа AUD
и т.д. Однако я бы выбрал другой подход, вы могли бы иметь недопустимые ключи в полезной нагрузке и терпеть неудачу молча.
json_decode($json, true);
,