¿Cómo hacer eco o imprimir una matriz en PHP?


199

Tengo esta matriz

Array
(
  [data] => Array
    (
      [0] => Array
        (
          [page_id] => 204725966262837
          [type] => WEBSITE
        )

      [1] => Array
        (
          [page_id] => 163703342377960
          [type] => COMMUNITY
        )
      )
)

Mi pregunta es ¿cómo puedo hacer eco del contenido sin esta estructura? Lo intenté

foreach ($results as $result) {
    echo $result->type; 
    echo "<br>";
} 

Respuestas:


125

Esto lo hara

foreach($results['data'] as $result) {
    echo $result['type'], '<br>';
}

Gracias por esto. ¿Puede decirme cómo puedo hacer eco, por ejemplo, solo del tipo de matriz [1]?
— EnexoOnoma

77
@Kaoukkosecho $results['data'][1]['type'];
— Shiplu Mokaddim

¿Qué pasa si no tengo ninguna clave como data?
— Pratik Butani

467

Para ver el contenido de la matriz puede usar.

1) print_r($array); o si desea una matriz bien formateada, entonces:

echo '<pre>'; print_r($array); echo '</pre>';

2) se usa var_dump($array)para obtener más información del contenido de la matriz, como el tipo de datos y la longitud.

3) puedes hacer un loop de la matriz usando php's foreach();y obtener la salida deseada. Más información sobre foreach en el sitio web de documentación de php:
http://in3.php.net/manual/en/control-structures.foreach.php


2
Agradable y elegante Es posible que desee cambiar la etiqueta de cierre en el n. ° 1 de <pre /> a </pre>.
— Michael

1
Esta respuesta no aborda el error que cometió OP.
— Shiplu Mokaddim

2
¿podría explicar cómo la construcción <pre> </pre> hace que esta pantalla sea "agradable"?
— Robin Andrews

1
La etiqueta @Robin <pre> muestra nuevas líneas y tabulación, ya que es impresa por print_r (); sin <pre> verías un desordenado límite de datos sin formato. Para verlo formateado, debe ver la fuente de la página html.
— jc

97

Si solo desea conocer el contenido sin un formato (por ejemplo, para fines de depuración), uso esto:

echo json_encode($anArray);

Esto lo mostrará como un JSON que es bastante legible para los humanos.


Quería extraer algunos datos de un html - phpdocumento usando el InAppBrowser executeScriptmétodo Cordova , ¡sin json_encode($array)eso no podría lograrlo! Muchas gracias @ Mark E
— Hamid Araghi

31

Hay múltiples funciones para imprimir contenido de matriz que cada una tiene características.

print_r()

Imprime información legible para humanos sobre una variable.

$arr = ["a", "b", "c"];
echo "<pre>";
print_r($arr);
echo "</pre>";
Array
(
    [0] => a
    [1] => b
    [2] => c
)


var_dump()

Muestra información estructurada sobre expresiones que incluye su tipo y valor.

echo "<pre>";
var_dump($arr);
echo "</pre>";
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}


var_export()

Muestra información estructurada sobre la variable dada que la representación devuelta es un código PHP válido.

echo "<pre>";
var_export($arr);
echo "</pre>";
array (
  0 => 'a',
  1 => 'b',
  2 => 'c',
)

Tenga en cuenta que debido a que el navegador condensa múltiples caracteres de espacios en blanco (incluidas las nuevas líneas) en un solo espacio ( respuesta ), debe ajustar las funciones anteriores <pre></pre>para mostrar el resultado en el formato correcto.


También hay otra forma de imprimir contenido de matriz con ciertas condiciones.

echo

Salida de una o más cadenas. Por lo tanto, si desea imprimir el contenido de la matriz echo, debe recorrer la matriz y utilizarla echopara imprimir los elementos de la matriz.

foreach ($arr as $key=>$item){
    echo "$key => $item <br>";
}
0 => a 
1 => b 
2 => c 

24

Se puede utilizar print_r, var_dumpe var_exportfuncations de php:

print_r: Convertir a forma humana legible

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

var_dump(): le mostrará el tipo de cosa, así como lo que contiene.

var_dump($results);

foreach loop: utilizando para cada bucle puede iterar todos y cada uno de los valores de una matriz.

foreach($results['data'] as $result) {
    echo $result['type'].'<br>';
}


17
foreach($results['data'] as $result) {
    echo $result['type'], '<br />';
}

o echo $results['data'][1]['type'];


Gracias por esto. ¿Puede decirme cómo puedo hacer eco, por ejemplo, solo del tipo de matriz [1]?
— EnexoOnoma

¿Qué quieres decir con Array [1]? : o
— Andreas Wong

@andreas Quiero hacer eco solo de la COMUNIDAD o el 163703342377960. No todo el contenido de la matriz, sino específicamente
— EnexoOnoma

Probarecho $results['data'][1]['page_id'];
— Andreas Wong

8

No es necesario poner un bucle para ver los datos en la matriz, simplemente puede hacerlo de la siguiente manera

<?php
echo "<pre>";
 print_r($results); 
echo "</pre>";
?>

3

Sé que esta es una pregunta antigua, pero si desea una representación PHP analizable, puede usar:

$parseablePhpCode = var_export($yourVariable,true);

Si repite el código exportado a un archivo.php (con una declaración de retorno), puede requerirlo como

$yourVariable = require('file.php');

0

Sin embargo, verifiqué la respuesta, (para cada uno) en PHP está en desuso y ya no funciona con las últimas versiones de php.

Por lo general, convertiríamos una matriz en una cadena para registrarla en algún lugar, tal vez para depurar o probar, etc.

Convertiría la matriz en una cadena haciendo:

$Output = implode(",", $SourceArray);

Mientras:

$ output es el resultado (donde se generaría la cadena

",": es el separador (entre cada campo de matriz

$ SourceArray: es su matriz fuente.

espero que esto ayude


-2

Recorra e imprima todos los valores de una matriz asociativa, podría usar un foreachbucle, como este:

foreach($results as $x => $value) {
    echo $value;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.