¿Hay una impresión bonita para PHP?

2 minutos de lectura

Estoy arreglando algunos scripts PHP y me falta la bonita impresora de Ruby. es decir

require 'pp'
arr = {:one => 1}
pp arr

generará {:uno => 1}. Esto incluso funciona con objetos bastante complejos y hace que profundizar en un script desconocido sea mucho más fácil. ¿Hay alguna forma de duplicar esta funcionalidad en PHP?

Ambas cosas print_r() y var_dump() generará representaciones visuales de objetos dentro de PHP.

$arr = array('one' => 1);
print_r($arr);
var_dump($arr);

  • Si instala la extensión XDebug, var_dump se convierte en una impresora aún más bonita.

    – Alan Tormenta

    22 de julio de 2009 a las 20:56

  • Para que se vea aún mejor en un navegador, use: echo “

    ";  imprimir_r($arr);  eco "

    “;

    – Dom M.

    22 de julio de 2009 a las 23:30

  • Para el punto de Domenic, simplemente envuélvalo: function pr($array = null) { print “

    " .  imprimir_r($matriz) .  "

    "; }

    – Darren Newton

    23 de julio de 2009 a las 0:53

  • @darren_n: print_r() emite automáticamente y no devuelve nada (a menos que su segundo parámetro sea true), por lo que no puede concatenar a otra cadena. Utilice lo siguiente en su lugar: function pr($var) { print '<pre>'; print_r($var); print '</pre>'; }

    – Andrés Moore

    23 de julio de 2009 a las 13:55

  • @Domenic Es probable que desee `hacer eco de '

    ', htmlentities(print_r($arr, true)), '

    ' en su lugar, lo que también otorga cierta credibilidad a la sugerencia de Darren (:

    usuario212218

    7 de junio de 2011 a las 15:34

avatar de usuario
Guillaume Chevalier

Lo mejor que encontré hasta ahora es esto:

echo "<pre>";
print_r($arr);
echo "</pre>";

Y si lo quieres más detallado:

echo "<pre>";
var_dump($arr);
echo "</pre>";

Agregar un <pre> La etiqueta HTML en un entorno de desarrollo web respetará las líneas nuevas \n de la función de impresión correctamente, sin tener que añadir algo de html <br>

avatar de usuario
Esteban Katulka

Para PHP, puede aprovechar fácilmente HTML y algún código recursivo simple para hacer una bonita representación de matrices y objetos anidados.

function pp($arr){
    $retStr="<ul>";
    if (is_array($arr)){
        foreach ($arr as $key=>$val){
            if (is_array($val)){
                $retStr .= '<li>' . $key . ' => ' . pp($val) . '</li>';
            }else{
                $retStr .= '<li>' . $key . ' => ' . $val . '</li>';
            }
        }
    }
    $retStr .= '</ul>';
    return $retStr;
}

Esto imprimirá la matriz como una lista de listas HTML anidadas. HTML y su navegador se encargarán de sangrar y hacerlo legible.

avatar de usuario
Turnor

¿Qué hay de print_r?

http://www.php.net/print_r

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad