PHP:foreach没有形成一个数组

时间:2012-09-07 08:28:36

标签: php xml arrays rss foreach

我这样做并且有效。

<?php
    function load_file($url) 
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $xml = simplexml_load_string(curl_exec($ch));
        return $xml;
    }

    $feedurl = 'http://www.astrology.com/horoscopes/daily-extended.rss';
    $rss = load_file($feedurl);

    $items = array();
    $count = 0;
    foreach ($rss->channel->item->description as $i => $description) 
    {
        $items[$count++] = $description;
    }
    echo $items[0];
?>

当我echo $items[1];时,它没有显示下一行。不知道我做错了什么。

1 个答案:

答案 0 :(得分:4)

以下是xml的一个示例:

<channel>
    <item>
        <description>blah</description>
    </item>
    <item>
        <description>blah1</description>
    </item>
    <item>
        <description>blah2</description>
    </item>
    <item>
        <description>blah3</description>
    </item>
</channel>

当您执行$rss->channel->item->description时,您将获得第一个item description

您需要首先遍历items然后获取每个描述。

e.g:

$descriptions = array();
foreach($rss->channel->item as $item){
    $descriptions[] = $item->description;
    // note I don't need the $count variable... if you just use
    // [] then it auto increments the array count for you.
}

希望有所帮助。它未经测试,但应该工作。