加拿大银行为以下货币提供RSS订阅:
澳元(AUD)、巴西雷亚尔(BRL)、人民币(CNY)、欧元(EUR)、港元(HKD)、印度卢比(INR)、印尼盾(IDR)、日元(JPY)、墨西哥比索��MXN)、新西兰元(NZD)、挪威克朗(NOK)、秘鲁新索尔(PEN)、俄罗斯卢布(RUB)、沙特阿拉伯里亚尔(SAR)、新加坡元(SGD)、南非兰特(ZAR)、韩元(KRW)、瑞典克朗(SEK)、瑞士法郎(CHF)、新台币(TWD)、土耳其里拉(TRY)、英镑(GBP)、美元(USD)
以下是一种无需使用API或第三方服务进行货币转换的方法:
<?php
class EXCHANGE {
public $Rates;
public $Rate;
public function __construct(){
$this->Rates = $this->fetchAllRates();
foreach($this->Rates as $currency => $rate){
$this->Rate[$currency] = $rate['latest'];
}
}
public function fetchAllRates(){
$currencies = ["AUD","BRL","CNY","EUR","HKD","INR","IDR","JPY","MXN","NZD","NOK","PEN","RUB","SAR","SGD","ZAR","KRW","SEK","CHF","TWD","TRY","GBP","USD"];
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, "https://www.bankofcanada.ca/valet/observations/group/FX_RATES_DAILY/json?start_date=2010-01-01");
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
$rates = curl_exec($cURL);
curl_close($cURL);
$rates = json_decode($rates,true)['observations'];
foreach($currencies as $currency){
foreach($rates as $rate){
$AllRates[$currency][$rate['d']] = $rate['FX'.$currency.'CAD']['v'];
$AllRates[$currency]['latest'] = $rate['FX'.$currency.'CAD']['v'];
}
}
return $AllRates;
}
public function convert($value,$from,$to){
if($to == "CAD"){ return $value*$this->Rate[$from]; }
else { return ($value*$this->Rate[$from])/$this->Rate[$to]; }
}
}
$Exchange = new EXCHANGE();
foreach($Exchange->Rate as $currency => $rate){
echo $currency.': '.$rate."<br>\n";
}
echo "Converting 2.00 USD to CAD : ".$Exchange->convert(2,"USD","CAD")."\n";
echo "Converting 2.00 USD to AUD : ".$Exchange->convert(2,"USD","AUD")."\n";
更新:
我最初忘记了放置转换方法。
信息:
这个类使用加拿大银行的RSS源。它不是最准确的数据,因为它只在每个工作日更新一次。$Rate属性包含CAD货币的汇率。因此,要转换其他货币,首先将初始货币转换为CAD,然后再转换为新货币。所以在上面提供的例子中,2.00美元被转换为2.5486加元。然后除以澳元的汇率,结果为2.7708197434225澳元。