我正在尝试从源中提取数据,然后解析3个不同字段的数据:“title”,“link”,“description”,然后输出数据。但是,循环似乎加载了前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:
答案 0 :(得分:3)
你在for循环中忘记了一个$。
for($i = 0;$i<10; $i++) { [..] }
答案 1 :(得分:2)
你创造了一个无休止的for循环:
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>';
}
答案 2 :(得分:1)
它必须是$ i&lt; 10 ..你正在使用i&lt; 10 ..如果您的错误报告处于正确的水平,它最终会给出一个未定义的常量通知