添加到关联数组

时间:2011-07-11 10:32:12

标签: php

我有一些看起来像这样的xml:

<?xml version="1.0"?>
    <data>
<items>
    <item><timestamp>2011-07-11T09:01:42Z</timestamp><title><![CDATA[ some data here ]]></title><link>http://twitter.com/aurl</link></item>
    <item><timestamp>2011-05-11T09:01:42Z</timestamp><title><![CDATA[ some data here ]]></title><link>http://twitter.com/aurlhere</link></item>
</items>

我试图遍历它并将其添加到数组中:

 foreach($xml->items->item as $e) {
              $feedData['timestamp'] = $e->timestamp;
            $feedData['title'] = $e->title;
            $feedData['link'] = $e->link;
            $feedData['type'] = $e->type;
        }

    print_r($feedData);

xml在那里,如果我在foreach中放回一个回音,我会得到10个响应(这是我有多少项)但是当我打印出来的所有数据时,我得到的是一行(这是最后一个条目) xml doc)。

Array ( [timestamp] => SimpleXMLElement Object ( [0] => 2011-07-08T08:05:19Z ) [title] => SimpleXMLElement Object ( ) [link] => SimpleXMLElement Object ( [0] => http://twitter.com.aurl ) [type] => SimpleXMLElement Object ( ) ) 

我怀疑我在每个循环上覆盖了数组。但为什么 ?应该添加到数组中。对不起,我的PHP不是很好...因此,怀疑是一个有点愚蠢的问题。

2 个答案:

答案 0 :(得分:4)

 $i = 0;
 foreach($xml->items->item as $e) { 
   $feedData[$i]['timestamp'] = $e->timestamp;
   $feedData[$i]['title'] = $e->title;
   $feedData[$i]['link'] = $e->link;
   $feedData[$i]['type'] = $e->type;
   $i++;
 }

print_r($feedData);

答案 1 :(得分:3)

嗯,只有一个$feedData数组,并且您始终为某些特定键设置值,例如$feedData['timestamp']。您认为这应该添加到数组?键是唯一的,相同的键不能出现两次,所以是的,你只是覆盖了值。

似乎你想要一个数组数组:

$feedData = array();

foreach($xml->items->item as $e) {
    $feedData[] = array(
        'timestamp' => $e->timestamp;
        'title' => $e->title;
        'link' => $e->link;
        'type' => $e->type;
    );
}

有关数组的更多信息,请查看array manual [docs]