2016-10-18 2 views
1

Ich versuche, ein Array von Simplexml_load_file durchlaufen, beim Zugriff auf das Array außerhalb von meinem für jede Schleife erwarte ich Ergebnisse,Ausgabe von für jede Schleife auf SimpleXMLElement Objektarray, ein Knoten weiter in dann außerhalb der Schleife

print_r ($feedobject->Item[0]->attributes())`; 

Ausgang:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [ID] => 202fnl 
      [TableID] => newitem 
     ) 
) 

Wenn für jede Schleife über meinen Zugriff auf

foreach ($feedobject->Item[$x] as $value) { 
    print_r ($value->attributes());  
$x++; 
} 

ich unerwartete Ergebnisse (einen Schritt weiter in das Array)

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [TableFieldID] => description 
      [Value] => Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works! 
     ) 
) 

XML-Datei sieht aus wie

<Item ID="202fnl" TableID="newitem"> 
     <ItemField TableFieldID="description" Value="Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works!"/> 

Warum dies geschieht und hat jemand einen besseren Vorschlag für Looping durch bestimmte Elemente dieses haben Array?

Antwort

1

Sie sind verwirrt über die Elementauswahl. Um jedes <Item> zu erhalten, verwenden Sie einfach $feedobject->Item.

// select each `<Item>` 
foreach ($feedobject->Item as $value) { 
    echo $value->attributes()->ID; 
} 

Wenn Sie $feedobject->Item[$x] as $value verwenden, dies deutet bereits direkt an Elemente innerhalb <Item>, die Sie <ItemField> zeigt.

+0

Haben die richtige Ausgabe danach, vielen Dank. –

+0

@GreggoryWiley sicher froh, dass dies geholfen hat – Ghost