【问题标题】:Sub-array in array using PHP使用PHP的数组中的子数组
【发布时间】:2012-06-09 01:38:17
【问题描述】:

当我执行以下操作时

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

代码有效,但只打印一次。

当我这样做时

$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>";
}

?>

【问题讨论】:

  • 运算符.=用于字符串。

标签: php arrays loops foreach while-loop


【解决方案1】:

在 PHP 中为数组添加附加索引时,可以使用方括号[]。

例如,$arr['exchange'][] = array('to' =&gt; $to, 'rate' =&gt; $result[0]);

【讨论】:

    【解决方案2】:

    您的代码存在一些问题,即您正在寻找 [] 符号以附加到数组中。

    其次,我了解您要对阵列形成做什么,但我不确定为什么。使用键来跟踪各种汇率交叉点似乎更容易创建如下所示的数组,这也将在以后的 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

    【讨论】:

      【解决方案3】:

      在上面的代码sn-p中你需要使用array_push函数创建多维数组。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 2017-12-05
        相关资源
        最近更新 更多