我正在获取一些汇率数据,并希望访问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;
感谢您提供任何帮助。
答案 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;