1

我正在尝试从源中提取数据,然后解析 3 个不同字段的数据:“标题”、“链接”、“描述”,然后输出数据。但是,循环似乎加载了前 10 篇文章,但随后变成了一个永无止境的循环。我该如何解决?

<?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: 图像

4

3 回答 3

3

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

于 2012-07-15T19:42:05.137 回答
2

您已经创建了一个无限循环:

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

它是无穷无尽的,因为中间的表达总是真实的:

i < 10

它给出:“注意:使用未定义的常量 i - 假定为 'i'”,所以它是:

'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>';
}
于 2012-07-15T19:44:51.870 回答
1

它必须是 $i<10.. 你正在使用 i<10 ..如果你的错误报告处于正确的级别,最终也会给出一个未定义的常量通知

于 2012-07-15T19:43:24.820 回答