¿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>";
} 
EnexoOnoma
fuente

Respuestas:

125

Esto lo hara

foreach($results['data'] as $result) {
    echo $result['type'], '<br>';
}
Shiplu Mokaddim
fuente
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

Ibrahim Azhar Armar
fuente
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.

Mark E
fuente
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 
Mohammad
fuente
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>';
}
Ankur Tiwari
fuente
20

¿Intentaste usar print_rpara imprimirlo en forma legible para humanos?

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

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

Rezigned
fuente
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>";
?>
Vinod Kirte
fuente
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');
Niclas
fuente
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

Heider Sati
fuente
-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;
}
A. Morales
fuente