matriz php a xml usando recursión

Me gustaría que mi función convierta una matriz de dimensión N a xml, pero no funciona. ¿Alguien puede señalarme en la dirección correcta?

function arrayToXml($array,$render = ""){
if(!is_array($array)){
    return $array;
}
foreach ($array as $key => $value) {
    if(is_array($value)){
        $render .= '<' . $key . '>';
        arrayToXml($value,$render);
    }
    else {
        $render .= '<' . $key . '>';
        $render .= $value;
        $render .=  '</' . $key . '>';
    }
}
return $render;

}

Vale, he encontrado la solución:

function arrayToXml($array,$render = ""){
if(!is_array($array)){
    return $array;
}
foreach ($array as $key => $value) {
    if(is_array($value)){
        $render .= '<' . $key . '>';
        $render = arrayToXml($value,$render);
        $render .=  '</' . $key . '>';
    }
    else {
        $render .= '<' . $key . '>';
        $render .= $value;
        $render .=  '</' . $key . '>';
    }
}
return $render;

}

preguntado el 31 de julio de 12 a las 14:07

Defina "no funciona". ¿Qué hace, qué esperas en su lugar? -

ACTUALIZAR no puede funcionar, ya que está sobrescribiendo $render si el hijo es una matriz... -

@feeela, funciona para mí, compruébalo. -

1 Respuestas

No está utilizando el valor de retorno de arrayToXml($value,$render);, pero necesita asignarlo a $render también.

// …
if(is_array($value)){
    $render .= '<' . $key . '>';
    $render .= arrayToXml($value,$render);
}

También tenga en cuenta que se pueden encontrar toneladas de secuencias de comandos listas para usar en la web para traducir una matriz de PHP a XML. Por ejemplo http://snipplr.com/view/3491/.

Respondido 31 Jul 12, 14:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.