Convirtiendo un XML en una matriz PHP multidimensional

Tengo el siguiente conjunto de arreglos en un archivo XML:

           

He utilizado una función que encontré para convertir el XML en una matriz multidimensional que se ve así:

 Array ( [hats] => Array ( [a] => Array ( ) [a_attr] => Array ( [id] => Chicago BULLS [img] => bulls.jpeg [cost] => $25.00 ) [b] => Array ( ) [b_attr] => Array ( [id] => Toronto RAPTORS [img] => raptors.jpeg [cost] => $25.00 ) [c] => Array ( ) [c_attr] => Array ( [id] => Orlando MAGIC [img] => magic.jpeg [cost] => $25.00 ) ) ) 

Como puede ver, solo ha tomado la mitad del archivo XML, y tampoco puedo usar números así que tengo que recurrir a las letras.

En última instancia, estoy tratando de hacer que lea el archivo XML y luego mostrar solo lo que se muestra dentro de las tags y tags y, finalmente, más.

¿Cómo puedo analizar sintácticamente el archivo XML en una matriz para poder usar un ciclo foreach para mostrar cada línea en una sección determinada del archivo XML (solo sombreros o solo ropa).

Puede usar xml_parse_into_struct – Analizar datos XML en una estructura de matriz

Sintaxis: int xml_parse_into_struct (resource $ parser, string $ data, array & $ values ​​[, array & $ index]) Esta función analiza una cadena XML en 2 estructuras de matriz paralelas, una (índice) que contiene punteros a la ubicación de los valores apropiados en la matriz de valores. Estos dos últimos parámetros se deben pasar por referencia.

  < ?php $simple = '         '; $p = xml_parser_create(); xml_parse_into_struct($p, $simple, $vals, $index); xml_parser_free($p); echo "Index array\n"; print_r($index); echo "\nVals array\n"; print_r($vals); ?> 

Ref: http://us1.php.net/xml_parse_into_struct

¿Por qué no leer directamente desde XML con simplexml ?

 $xml = simplexml_load_string($x); // assume XML in $x foreach ($xml->children() as $name => $value) { echo "$name: 
"; // name of the node, eg '' foreach ($value->children() as $item) { echo "$item[id], $item[img], $item[cost]
"; } }

ver esto funcionando: http://3v4l.org/dpjsg

En caso de que sea el creador de este XML, haga que sea más fácil analizar de esta manera:

      ...