foreach и simplexml

Это мой xml-файл:

<?xml version="1.0" encoding="utf-8" ?> <documentElement> <rows> <row> <column>1</column> <column>David</column> <column>Johnson</column> </row> <row> <column>2</column> <column>Jack</column> <column>Nixon</column> </row> </rows> </documentElement> 

Я хочу перебрать строки и добавить их в массив. Я передал его в simplexml а затем simplexml эти объекты, но не смог:

 $xml->rows $xml->rows->row $xml->row $xml->column 

Что мне делать?

Благодарю.

Related of "foreach и simplexml"

На самом деле это один из наиболее простых примеров:

 $sxml = simplexml_load_string($xml); foreach($sxml->rows->row as $name => $row) { echo $name, ': ', var_dump($row); } 

Что даст вам следующий результат:

 row: object(SimpleXMLElement)#3 (1) { ["column"]=> array(3) { [0]=> string(1) "1" [1]=> string(5) "David" [2]=> string(7) "Johnson" } } row: object(SimpleXMLElement)#5 (1) { ["column"]=> array(3) { [0]=> string(1) "2" [1]=> string(4) "Jack" [2]=> string(5) "Nixon" } 

Вы можете найти онлайн-демо: http://codepad.org/CYyQhvnM

Вы действительно должны взглянуть на раздел простых примеров в руководстве, в нем есть некоторые очень проницательные примеры, которые объясняются более подробно, чем здесь:

  • Основное использование SimpleXML

Я надеюсь, что ответ будет полезен в любом случае. Связанные вопросы:

  • Как использовать foreach с PHP и XML (simplexml)

Вы также можете перевернуть простой xml в массив, если вы больше привыкли к массиву: s

 <?php $xml = simplexml_load_file('./your.xml'); $json = json_encode($xml); $array = json_decode($json,TRUE); print_r($array); /** *Array ( [rows] => Array ( [row] => Array ( [0] => Array ( [column] => Array ( [0] => 1 [1] => David [2] => Johnson ) ) [1] => Array ( [column] => Array ( [0] => 2 [1] => Jack [2] => Nixon ) ) ) ) ) */ foreach($array['rows']['row'] as $row){ echo 'Id:'.$row['column'][0], ' Firstname:'.$row['column'][1], ' Lastname:'.$row['column'][2].'<br />'.PHP_EOL; } /*Result Id:1 Firstname:David Lastname:Johnson<br /> Id:2 Firstname:Jack Lastname:Nixon<br /> */ ?> 

Или еще более чистый пример хакры

 <?php $xml = simplexml_load_file('./test.xml'); $rows = json_decode(json_encode(iterator_to_array($xml->rows->row, 0)), 1); print_r($rows); /** * Array ( [0] => Array ( [column] => Array ( [0] => 1 [1] => David [2] => Johnson ) ) [1] => Array ( [column] => Array ( [0] => 2 [1] => Jack [2] => Nixon ) ) ) */ foreach($rows as $row){ echo 'Id:'.$row['column'][0], ' Firstname:'.$row['column'][1], ' Lastname:'.$row['column'][2].'<br />'.PHP_EOL; } 

Попробуйте $xml->rows[0]->row[0]

Если вы просто хотите прокручивать строки:

 <?php $xmlstr = <<<XML <?xml version="1.0" encoding="utf-8" ?> <documentElement> <rows> <row> <column>1</column> <column>David</column> <column>Johnson</column> </row> <row> <column>2</column> <column>Jack</column> <column>Nixon</column> </row> </rows> </documentElement> XML; $element = new SimpleXMLElement($xmlstr); foreach($element->rows->row as $row) { foreach($row as $column) { echo "{$column}<br>"; } echo "<hr>"; } ?> 
 $sxml = simplexml_load_string($xml); $newArray = array(); foreach($sxml->rows as $num => $row){ foreach($row as $el){ (array)$newArray[] = (array)$el; } } var_dump($newArray);