0

私が次のことをするとき

$arr['exchange'] = array('to' => $to, 'rate' => $result[0]);

コードは機能しますが、印刷は1回だけです。

私がこれをするとき

$arr['exchange'] .= array('to' => $to, 'rate' => $result[0]);

印刷します

{"from":"NZD","exchange":"ArrayArrayArrayArray"}

ただし、交換配列に6つのサブ配列を設定できるようにループする正しい方法は何ですか?

これが私の完全なコードです

<?php


$currencies = array("USD", "NZD", "KWD", "GBP", "AUD");
foreach ($currencies as $from)
{
$arr = array();
$arr['from'] = $from;
//$arr['exchange'] = array();

 foreach ($currencies as $to)
 {
    if($from != $to)
    {

        $url = 'http://finance.yahoo.com/d/quotes.csv?f=l1d1t1&s='.$from.$to.'=X';
        $handle = fopen($url, 'r');

        if ($handle) {
            $result = fgetcsv($handle);
            fclose($handle);
        }
        $results = $result[1].$result[2];
        $arr['exchange'] = array('to' => $to, 'rate' => $result[0]);


    }
 }
 print json_encode($arr);
 print"<br><br>";
}

?>
4

3 に答える 3

2

PHPで配列にインデックスを追加するときは、角かっこ[]を使用できます。

例えば、$arr['exchange'][] = array('to' => $to, 'rate' => $result[0]);

于 2012-06-05T01:33:37.383 に答える
1

[]コードにはいくつかの問題があります。つまり、配列に追加する表記法を探しています。

第二に、その配列形成で何をしようとしているのかは理解していますが、その理由はよくわかりません。キーを使用して以下に示すような配列を作成して、さまざまな為替レートのクロスを追跡する方が簡単なようです。これは、後で JavaScript 側で管理するのも簡単になります。

    $currencies = array("USD", "NZD", "KWD", "GBP", "AUD");
    $cross = array();
    foreach ($currencies as $from) {
        $cross[$from] = array();
        foreach ($currencies as $to) {
            if ($from != $to) {
                $url = 'http://finance.yahoo.com/d/quotes.csv?f=l1d1t1&s=' . $from . $to . '=X';
                $handle = fopen($url, 'r');

                if ($handle) {
                    $result = fgetcsv($handle);
                    //echo "$from:$to - <br/>";
                    //var_dump($result);
                    fclose($handle);
                    $cross[$from][$to] = $result[0];
                }
            } else {
                $cross[$from][$to] = 1;
            }
        }
        print json_encode($cross);
        print"<br><br>";
    }

このようにして、次のようになります。

{
"USD": {...},
"NZD": {"USD":1.532,"NZD":1,"KWD":0.81,"GBP":1.546,"AUD":1.120},
"KWD": {...},
"GBP": {...},
"AUD": {...}
}

そして、次のようなJavaScriptでアクセスできます:

cross[from][to]

また

cross.NZD.USD

于 2012-06-05T02:10:55.623 に答える
0

上記のコード スニペットでは、array_push 関数を使用して多次元配列を作成する必要があります。

例 array_push($arr['exchange'],array('to' => $to, 'rate' => $result[0]));

于 2012-08-19T14:58:46.387 に答える