2012-07-15 73 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 ..這最終會給出一個未定義的常量通知過,如果你的錯誤報告是在