Jonah Jonah - 4 months ago 32
PHP Question

Multi currency using rates from API

I'm looking for some assistance with some code. I'm trying to put this to bed as it's driving me nuts. The Psuedo code for this would be to

  1. Download the rates from the Yahoo API and declare my base rate to my foreign exchange.

  2. Store an array of currencies to choose from to compare against the base currency.

  3. I then GET the chosen currency and register it in a
    to be used on other pages. (I'm unsure if this is correct?)

  4. I then calculate the Price of my product which is in
    to the selected foreign currency.

  5. Output the converted price anywhere on the page.

My script takes GET values from the URL like so:


My code is like so..

  1. First I get the rates from the Yahoo API:


    $from = 'GBP';
    $to = '$c';
    $url = ''. $from . $to .'=X';
    $handle = @fopen($url, 'r');

    if ($handle) {
    $result = fgets($handle, 4096);
    $allData = explode(',',$result); /* Get all the contents to an array */
    $PoundValue = $allData[1];

  2. Then I store an array of the currencies.

    $currency_array = array ('USD','EUR','RMB','JPY','AUD','CHF')

  3. Then I get the chosen currency.

    if(isset($_GET['c'])) {
    $c = $_GET['c'];

    if(array($currency_array)) {
    $_SESSION['currency_array'] = $c;

  4. I then calculate the product price.

    $Total = $Price * $currency_array;

    $outprice = number_format($Total, 2, '.', ',');

  5. Then I output on the page

    <?php echo .$outprice; ?>

So is all my coding logically in the right order?

Any help would be greatly appreciated.

Just as a side note. When I type in the URL ending in

I have put a dump in there and my output is

0 => string '"GBP$C=X"' (length=9)
1 => string '0.00' (length=4)
2 => string '"N/A"' (length=5)
3 => string '"N/A"

' (length=7)

Why is the
value not being returned as the chosen currency?



$to = '$c';

should probably just be

$to = $c;


$to = "$c"; // redundant "make a string of this string" version.

Single quoted strings do not interpolate variable values.