我想使用fixer.io api在php中制作货币转换器 使用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中。 我的问题是你如何得到所有的费率 当我使用foreach时,我得到了
警告:为\ index.php中的foreach()提供的参数无效 12
另一个问题我不明白int(1)来自json的位置(如果我评论foreach我显示像show这里但是如果我取消注释foreach它显示在警告下面
我该如何解决这个问题?欢迎任何帮助!
答案 0 :(得分:1)
您不需要foreach
循环,响应中只有一个rates
元素。所以它只是:
$rates = $data->rates;
$AUD = $rates->AUD;
$BGN = $rates->BGN;
...
答案 1 :(得分:0)
您缺少json有效内容中的层次结构。
$data = json_decode($json);
foreach($data->rates as $key=>$value){ // get to the rates array
$$key = $value;
}
这会动态创建一个名为$ AUD的密钥AUD
等等。但是,我会选择另一种方法,您可能在有效负载中包含无效密钥,并且无声地失败。