2011-07-11 16 views
1

私はこのようになりますいくつかの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の返答が返ってきますが(どれくらいの数のアイテムがあるのでしょうか)、配列を出力すると1行だけです(これはxmlドキュメントの最後のエントリです)。

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は素晴らしいです...したがって、容疑者は少しばかげた質問です。

答えて

3

まあ、一つだけ$feedData配列があり、あなたが常に例えば、いくつかの特定のキーの値を設定しています$feedData['timestamp']。これがの配列にをどのように追加するべきだと思いますか?キーはユニークで、同じキーは2回表示されないので、値を上書きするだけです。

あなたが配列の配列をしたいようだ:

$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]を見てください。

+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);