Imprimir un array de forma legible en PHP

PHP   |   6 Comentarios

Imprimir un array de forma legible en PHP

En ocasiones queremos ver el contenido de un array para ver si estamos obteniendo la información que buscamos. Lo más sencillo es usar las funciones var_dump o print_r, que nos muestran en pantalla el contenido del array.

Si nuestro array es pequeño, no hay problema. Pero no es raro que tengamos un array de arrays de arrays… ad infinitum, sobre todo si trabajamos con bases de datos que nos devuelven muchos resultados en un solo Array.

Pongamos un ejemplo:

$coche1 = Array("Renault","Megane",Array("5 puertas","Diesel","Rojo"));
$coche2 = Array("Opel","Corsa",Array("3 puertas","Gasolina","Gris"));
$coche3 = Array("Seat","Ibiza",Array("5 puertas","Diesel","Verde"));
$coche4 = Array("Audi","TT",Array("3 puertas","Gasolina","Plateado"));
$coches = Array($coche1,$coche2,$coche3,$coche4);

Ya tenemos un array simple que nos servirá de ejemplo. ¿Qué ocurre si usamos la función var_dump para ver su contenido?

var_dump($coches);
/* Resultado:
array(4) { [0]=> array(3) { [0]=> string(7) "Renault" [1]=> string(6) "Megane" [2]=> array(3) {
[0]=> string(9) "5 puertas" [1]=> string(6) "Diesel" [2]=> string(4) "Rojo" } } [1]=> array(3) {
[0]=> string(4) "Opel" [1]=> string(5) "Corsa" [2]=> array(3) { [0]=> string(9) "3 puertas"
[1]=> string(8) "Gasolina" [2]=> string(4) "Gris" } } [2]=> array(3) { [0]=> string(4) "Seat"
[1]=> string(5) "Ibiza" [2]=> array(3) { [0]=> string(9) "5 puertas" [1]=> string(6) "Diesel"
[2]=> string(5) "Verde" } } [3]=> array(3) { [0]=> string(4) "Audi" [1]=> string(2) "TT" [2]=>
array(3) { [0]=> string(9) "3 puertas" [1]=> string(8) "Gasolina" [2]=> string(8) "Plateado" } } }
*/

Correcto. Todo en una linea. La función print_r nos ofrece una visión un poco más clara, eliminando los tipos de los contenidos, pero no nos soluciona mucho…

print_r($coches);
/* Resultado:
Array ( [0] => Array ( [0] => Renault [1] => Megane [2] => Array ( [0] => 5 puertas [1] =>
Diesel [2] => Rojo ) ) [1] => Array ( [0] => Opel [1] => Corsa [2] => Array ( [0] => 3
puertas [1] => Gasolina [2] => Gris ) ) [2] => Array ( [0] => Seat [1] => Ibiza [2] => Array (
[0] => 5 puertas [1] => Diesel [2] => Verde ) ) [3] => Array ( [0] => Audi [1] => TT [2] =>
Array ( [0] => 3 puertas [1] => Gasolina [2] => Plateado ) ) )
*/

Seguimos en las mismas, nos podemos dejar los ojos intentando separar lo que nos interesa. ¿Es que no hay una forma simple de mostrar los contenidos?

Por supuesto que sí: Las etiquetas <pre> y </pre>. Si usamos estas etiquetas para englobar el contenido de var_dump o print_r, nos aparece todo listado y de forma clara:

echo('<pre>');
var_dump($coches);
echo('</pre>');
/* Resultado:
array(4) {
  [0]=>
  array(3) {
    [0]=>
    string(7) "Renault"
    [1]=>
    string(6) "Megane"
    [2]=>
    array(3) {
      [0]=>
      string(9) "5 puertas"
      [1]=>
      string(6) "Diesel"
      [2]=>
      string(4) "Rojo"
    }
  }
  [1]=>
  array(3) {
    [0]=>
    string(4) "Opel"
    [1]=>
    string(5) "Corsa"
    [2]=>
    array(3) {
      [0]=>
      string(9) "3 puertas"
      [1]=>
      string(8) "Gasolina"
      [2]=>
      string(4) "Gris"
    }
  }
  [2]=>
  array(3) {
    [0]=>
    string(4) "Seat"
    [1]=>
    string(5) "Ibiza"
    [2]=>
    array(3) {
      [0]=>
      string(9) "5 puertas"
      [1]=>
      string(6) "Diesel"
      [2]=>
      string(5) "Verde"
    }
  }
  [3]=>
  array(3) {
    [0]=>
    string(4) "Audi"
    [1]=>
    string(2) "TT"
    [2]=>
    array(3) {
      [0]=>
      string(9) "3 puertas"
      [1]=>
      string(8) "Gasolina"
      [2]=>
      string(8) "Plateado"
    }
  }
}
*/

Lo mismo si usamos print_r, yo diria que incluso más claro:

echo('<pre>');
var_dump($coches);
echo('</pre>');
/* Resultado:
Array
(
    [0] => Array
        (
            [0] => Renault
            [1] => Megane
            [2] => Array
                (
                    [0] => 5 puertas
                    [1] => Diesel
                    [2] => Rojo
                )

        )

    [1] => Array
        (
            [0] => Opel
            [1] => Corsa
            [2] => Array
                (
                    [0] => 3 puertas
                    [1] => Gasolina
                    [2] => Gris
                )

        )

    [2] => Array
        (
            [0] => Seat
            [1] => Ibiza
            [2] => Array
                (
                    [0] => 5 puertas
                    [1] => Diesel
                    [2] => Verde
                )

        )

    [3] => Array
        (
            [0] => Audi
            [1] => TT
            [2] => Array
                (
                    [0] => 3 puertas
                    [1] => Gasolina
                    [2] => Plateado
                )

        )

)
*/

¡Sencillisimo! Vuestra vista está a salvo, y ahorraréis mucho tiempo que antes dedicabais a descifrar contenidos.

«La mayoría de los buenos programadores programan no
porque esperen que les paguen o que el público los adore,
sino porque programar es divertido.»
– Linus Torvalds.

¿Te ha gustado el artículo?
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (18 votos, promedio: 4,72 sobre 5)
Loading...

Suscríbete. Déjanos tu email y recibe contenido genial cada mes


Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada.

6 Comentarios

Ruben Munoz Autor

Hola Adrián, pues aquí en el blog de Codigonexo tienes multitud de artículos, luego recomendamos también los cursos de domestika pues son una buena herramienta para avanzar.

Adrian Huerta

Hola Ruben, soy nuevo en esto, pero la verdad es que es de las mejores y mas claras explicaciones, que veo, tienes algun otro lugar donde pueda seguir tu trabajo o donde impartas cursos, te agradezco mucho el tiempo que dedicaste para compartir tu conocimiento, saludos.

david

si podes corregi el print_r en el segundo ejemplo 

david

muy buena gacias.  

Sebastian

Muy buen informacion....

Serj Dx

muy buena. Estoy empezando con PHP y me sirvió de mucho tu información gracias...