我有一些看起来像这样的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不是很好...因此,怀疑是一个有点愚蠢的问题。
答案 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]。