无法访问for循环外的变量

时间:2014-01-26 08:05:15

标签: php

我正在获取一些汇率数据,并希望访问for循环之外的变量。我目前的代码只会产生:

1:0.82910

但我的预期结果是:

1:0.82910

2:0.82910

我想知道为什么这个变量在循环之外是不可访问的,我怎么能让它可以访问?

我的代码(对不起,如果代码不好,我是PHP新手)

$vExchaRates = file_get_contents("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");

$xml = simplexml_load_string($vExchaRates);

for ($i = 1; $i <= 32; $i++) {
    if ($xml->Cube[0]->Cube[0]->Cube[$i]->attributes()->currency == "GBP") {
        $vGBPERate = $xml->Cube[0]->Cube[0]->Cube[$i]->attributes()->rate;
        echo "1: " . $vGBPERate . "\r\n";
    }
}

echo "2: " . $vGBPERate;

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:4)

您需要检查对象$xml->Cube[0]->Cube[0]->Cube[$i]是否已设置。

$vExchaRates = file_get_contents("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
$xml = simplexml_load_string($vExchaRates);

for ($i = 1; $i <= 32; $i++) {
    if (isset($xml->Cube[0]->Cube[0]->Cube[$i]) && $xml->Cube[0]->Cube[0]->Cube[$i]->attributes()->currency == "GBP") {
        $vGBPERate = $xml->Cube[0]->Cube[0]->Cube[$i]->attributes()->rate;
        echo "1: " . $vGBPERate . "\r\n";
   }
}    
echo "2: " . $vGBPERate;

<强> Demo.

注意:使用ini_set("display_errors",1)启用错误以获取此类错误或通知。

答案 1 :(得分:0)

看起来32太大而且数字并且正在抛弃它。使用foreach可能更好。它完美地运作:

$vExchaRates = file_get_contents("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");

$xml = simplexml_load_string($vExchaRates);

foreach($xml->Cube[0]->Cube[0]->Cube as $a)
{

    if ($a->attributes()->currency == "GBP") {
        $vGBPERate = $a->attributes()->rate;
        echo "1: " . $vGBPERate . "\r\n";
}
}

echo "2: " . $vGBPERate;