2012-07-15 79 views
1

我试图从数据源中提取数据,然后解析3个不同字段的数据:“title”,“link”,“description”,然后输出数据。但是,循环似乎加载了前10个文章,但随后变成了永无止境的循环。我该如何解决?XML/PHP读取XML,解析,输出

<?php 

#Load in File 
$xmlUrl ="http://sports.yahoo.com/mlb/rss.xml"; 
$ConvertToXml = simplexml_load_file($xmlUrl); 

# -> Setup XML 
$newsStory = $ConvertToXml->channel->item; 

# -----> Load News Stories 
for($i = 0;i<10; $i++){ 

    $title=$newsStory[$i]->title; 
    //$link=$newsStory[$i]->link; 
    $desc=$newsStory[$i]->description; 

    echo '<hr>'; 
    echo 'Title:'.$title.'<br />'; 
    //echo 'Link:'.$link.'<br />'; 
    echo 'Description'.$desc.'<br>'; 
    echo '<hr>'; 

} 

?> 

的XML我解析: img

回答

2

您已经创建了合适的水平无休止的循环:

for($i = 0;i<10; $i++){ 

这是无止境的,因为中间的表情总是truthy:

i < 10 

它提供:“通知:未定义的常量使用我 - 假设‘我’”所以它是:

'i' < 10 

而且"i"总是小于10,因为它的计算结果为0在操作方面。

在开发平台上启用错误报告到最高级别,以便快速发现这些小错误。

简单的办法就是添加缺少的$

for ($i = 0; $i < 10; $i++) { 
      ^

但实际上在整体的脚本的情况下,你可能希望倾向于有条件退出:

# -> Setup XML 
$newsStories = $ConvertToXml->channel->item; 

# -----> Load News Stories 
foreach ($newsStories as $index => $newsStory) { 

    if ($index === 10) break; 

    $title = $newsStory->title; 
    //$link = $newsStory->link; 
    $description = $newsStory->description; 

    echo '<hr>'; 
    echo 'Title:' . $title . '<br />'; 
    //echo 'Link:' . $link . '<br />'; 
    echo 'Description' . $description . '<br>'; 
    echo '<hr>'; 
} 
+0

很大的帮助。谢谢@Hakre! – CodeTalk 2012-07-15 19:57:43

3

你在你的for循环忘了$。 for($i = 0;$i<10; $i++) { [..] }

1

它必须是$ I < 10 ..您使用我< 10 ..这最终会给出一个未定义的常量通知过,如果你的错误报告是在