2009-09-15 18 views

Respuesta

24

Uso var_export si desea una representación que es también válida de PHP

$a = array (1, 2, array ("a", "b", "c")); 
$dump=var_export($a, true); 
echo $dump; 

mostrará

array (
0 => 1, 
1 => 2, 
2 => 
array (
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
), 
) 

Para revertir esta situación en una matriz, se puede utilizar eval, por ejemplo,

eval("\$foo=$dump;"); 
var_dump($foo); 

No está seguro de qué que se quiere hacer esto sin embargo. Si desea almacenar una estructura de datos PHP en algún lugar y luego volver a crearla, consulte serialize() y unserialize() que son más adecuados para esta tarea.

+0

Esto es INCORRECTO. No produce una matriz, solo hace $ foo una cadena, que es igual a $ dump, que también es una cadena, que debe ser analizada. –

+2

Realmente no está mal. Intentalo. http://codepad.viper-7.com/7ATm27 –

+0

No, no funciona. Cuando tomo la cadena de salida, comente las dos primeras líneas y establezco $ dump en esta cadena de salida (wither html o texto), obtengo un error de sintaxis. Por lo tanto, es diferente usar una variable var_export-ed y solo tener una cadena ya var_dump-ed. – Seika85

1

No puede. var_dump solo muestra texto pero no devuelve nada.

+0

¿Qué tal uno que tenga una cadena de var_dump a través de la copia antigua de goold paste? (Sé que las personas que copian pegan var_dumps enormes en archivos de texto y me envían esos archivos de texto.) – Seika85

+0

@ Seika85: Puede indicarles que utilicen el búfer de salida para obtener el resultado como una cadena. Pero a los fines de esta pregunta, este sigue siendo un "No" cuando preguntaron acerca de cómo obtener una matriz. – Joey

1

Quizás esté buscando var_export que le dará una expresión PHP válida del valor aprobado.

+1

acaba de editar su respuesta pensando que era mía! ¡lo siento! –

1

var_export crea el código PHP, que se puede ejecutar a través de la eval.

Pero me pregunto, ¿cuál es su idea?

1

Tuve un problema similar: un script de larga ejecución producía al final un vardump de gran matriz. Tuve que analizarlo de alguna manera para analizarlo más. Mi solución fue la siguiente:

cat log.stats | 
    sed 's/\[//g' | 
    sed 's/\]//g' | 
    sed -r 's/int\(([0-9]+)\)/\1,/g' | 
    sed 's/\}/\),/g' | 
    sed -r 's/array\([0-9]+\) \{/array(/g' > 
    log.stats.php 
+0

buena respuesta, el único problema es si tiene valores que contengan cadenas ... para que no se vean envueltos por '' – WonderLand

+0

Definitivamente fue solo un truco rápido que funcionó para mi situación específica. En general, var_dump es horrible de analizar, así que siempre que sea posible utilizo algo más (en su mayoría json_encode). Tienes razón en que las cuerdas causarían problemas. Enormes problemas si contienen barras o comillas. Moderado si contiene algo que a su vez se ve como salida de volcado var (=>, [8] o int (12)) :) – qbolec

Cuestiones relacionadas