teclas teclado sirven que para numerico numericas las especial edicion computadora celular bloque alfanumérico alfanumericas php arrays multidimensional-array foreach nested

php - teclado - for loop-mueve más profundo en la tecla numérica en una matriz multidimensional



teclas alfanumericas (1)

logré analizar una matriz de mi propio idioma. (para esto: llamado lenguaje de proyecto de lanza - lpl)

entonces .. / lance (dice (hola)) se formateará para

Array ( [0] => lpl_struct ( [args] => Array ( [0] => Array ( [0] => lpl_struct ( [args] => Array ( [0] => Array ( [0] => lpl_struct ( [args] => Array ( [0] => hello ) [funcname] => text ) ) ) [funcname] => says ) ) ) [funcname] => lance ) )

Ahora intento crear una estructura xml a partir de esto, aquí está mi intento de hacerlo:

function arr2xml($array) { $xml = ''''; if (is_array($array) || is_object($array)) { foreach ($array as $key => $value) { if (is_numeric($key)) { #move deeper in array to get the right NON-NUMERIC key } $xml .= ''<'' . $key . ''>'' . "/n" . $this->arr2xml($value) . ''</'' . $key . ''>'' . "/n"; } } else { $xml = htmlspecialchars($array, ENT_QUOTES) . "/n"; } return $xml; }

lo que estoy obteniendo de él hasta ahora es:

<0> <args> <0> <0> <args> <0> <0> <args> <0> hello </0> </args> <funcname> text </funcname> </0> </0> </args> <funcname> says </funcname> </0> </0> </args> <funcname> lance </funcname> </0>

¿es posible "omitir" las teclas numéricas en la matriz ?. diga ... ¿pasar más profundo a la siguiente tecla de matriz "real"?

nuestro deberia reconsiderar mi matriz creada

gracias por cualquier respuesta.

sry por mal formateo. soy un poco nuevo en stackoverflow. lanza


Traté de reconstruir tu matriz usando lo siguiente:

$arr = array(); $arr[] = array( ''args''=>array( array( ''args''=>array( array( ''args''=>array( ''hello'', ), ''funcname''=>''text'', ), ), ''funcname''=>''says'', ), ), ''funcname''=>''lance'', );

Luego actualicé su función arr2xml:

function arr2xml($array) { $xml = ''''; if (is_array($array) || is_object($array)) { foreach ($array as $key => $value) { if (is_numeric($key)) { // Skip a numeric key and recurse. $xml .= arr2xml($value); } else { $xml .= ''<'' . $key . ''>'' . "/n" . arr2xml($value) . ''</'' . $key . ''>'' . "/n"; } } } else { $xml = htmlspecialchars($array, ENT_QUOTES) . "/n"; } return $xml; }

Esto produjo lo siguiente, que está cerca de lo que estás buscando:

<args> <args> <args> hello </args> <funcname> text </funcname> </args> <funcname> says </funcname> </args> <funcname> lance </funcname>

Lo único que falta es el elemento raíz. Puedes agregar eso manualmente usando:

''<xml>'' . arr2xml($arr) . ''</xml>''

¡Espero que esto ayude!