2011-07-11 6 views
1

J'ai quelques xml qui ressemble à ceci:ajouter à un tableau associatif

<?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> 

et je suis en train de boucler sur elle et l'ajouter à un tableau:

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

Le xml est là et si je mets un écho dans le foreach je reçois 10 réponses (dont j'ai combien d'items) mais quand j'imprime le tableau tout ce que je reçois est une ligne (qui est la dernière entrée dans le doc 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 ()) 

Je soupçonne que je écrase le tableau sur chaque boucle. Mais pourquoi ? Cela devrait être ajouté au tableau. Désolé mon php n'est pas génial ... donc ce qui est suspect est un peu une question stupide.

Répondre

3

Eh bien, il n'y a qu'un seul tableau $feedData et que vous mettez toujours la valeur de certaines touches spécifiques, par exemple $feedData['timestamp']. Comment pensez-vous que cela devrait ajouter à la matrice? Les clés sont uniques, la même clé ne peut pas apparaître deux fois, alors oui, vous écrasez simplement les valeurs.

Il vous semble voulez un tableau de tableaux:

$feedData = array(); 

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

Jetez un oeil à la array manual [docs] pour plus d'informations sur les tableaux.

+0

Oui, c'est ce dont j'avais besoin. J'ajoute à la série à différentes étapes donc c'est le plus approprié je pense. –

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); 
Questions connexes