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ループを作成しました。

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

真ん中の表現は常に真実であるため、それは無限です。

i < 10

「注意:未定義の定数iの使用-想定される「i」」であるため、次のようになります。

'i' < 10

そして、それがその演算子のコンテキストで評価されるため、"i"常によりも小さくなります。100

開発プラットフォームで最高レベルのエラーレポートを有効にして、これらのマイナーエラーをすばやく見つけられるようにします。

簡単な解決策は、不足しているものを追加すること$です:

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 に答える