php - tabla - Mostrar una matriz en un formato legible/jerárquico
matrices en php (17)
Creo que var_export()
, el hermano olvidado de var_dump()
tiene el mejor resultado, es más compacto:
echo "<pre>";
var_export($menue);
echo "</pre>";
Por cierto: no es necesario usar <pre>
. var_dump()
y var_export()
ya están formateados cuando var_export()
un vistazo al código fuente de tu página web.
Aquí está el código para extraer los datos de mi matriz
<?php
$link = mysqli_connect(''localhost'', ''root'', '''', ''mutli_page_form'');
$query = "SELECT * FROM wills_children WHERE will=73";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
if($row = mysqli_fetch_assoc($result)) {
$data = unserialize($row[''children'']);
}
/* free result set */
mysqli_free_result($result);
}
?>
Cuando uso print_r ($ data) se lee como:
Array ( [0] => Array ( [0] => Natural Chlid 1 [1] => Natural Chlid 2 [2] => Natural Chlid 3 ) )
Me gustaría que se lea como:
Niño natural 1
Niño natural 2
Niño natural 3
En lugar de
print_r($data);
tratar
print "<pre>";
print_r($data);
print "</pre>";
Esta puede ser una solución más simple:
echo implode(''<br>'', $data[0]);
Lo uso para obtener claves y sus valores $ qw = mysqli_query ($ connection, $ query);
while ( $ou = mysqli_fetch_array($qw) )
{
foreach ($ou as $key => $value)
{
echo $key." - ".$value."";
}
echo "<br/>";
}
Muy buena forma de imprimir una matriz formateada en php, usando la función var_dump.
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
One-liner para una representación JSON rápida y fácil:
echo json_encode($data, JSON_PRETTY_PRINT);
Si ya usas el compositor para el proyecto, requiere symfony / yaml y:
echo Yaml::dump($data);
Para matrices individuales, puede usar implode, tiene un resultado más limpio para imprimir.
<?php
$msg = array(''msg1'',''msg2'',''msg3'');
echo implode(''<br />'',$msg);
echo ''<br />----------------------<br/>'';
echo nl2br(implode("/n",$msg));
echo ''<br />----------------------<br/>'';
?>
Para matrices multidimensionales, debe combinar con algún tipo de bucle.
<?php
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
$msgs[] = $msg;
foreach($msgs as $msg) {
echo implode(''<br />'',$msg);
echo ''<br />----------------------<br/>'';
}
?>
Prueba esto:
foreach($data[0] as $child) {
echo $child . "/n";
}
en lugar de print_r($data)
Solo usaría herramientas en línea.
primero haz print_r (tu_array)
Segundo copia el resultado y pega en http://phillihp.com/toolz/php-array-beautifier/
Supongo que uno usa print_r para la depuración. Entonces sugeriría usar bibliotecas como Kint . Esto permite mostrar grandes matrices en un formato legible:
$data = [[''Natural Child 1'', ''Natural Child 2'', ''Natural Child 3'']];
Kint::dump($data, $_SERVER);
Tengo una función básica:
function prettyPrint($a) {
echo "<pre>";
print_r($a);
echo "</pre>";
}
prettyPrint($data);
EDITAR: Función optimizada
function prettyPrint($a) {
echo ''<pre>''.print_r($a,1).''</pre>'';
}
EDITAR: función optimizada de Moar con soporte personalizado de etiquetas
function prettyPrint($a, $t=''pre'') {echo "<$t>".print_r($a,1)."</$t>";}
si alguien necesita ver arreglos tan geniales;) use este método ... esto se imprimirá en la consola de su navegador
function console($obj)
{
$js = json_encode($obj);
print_r(''<script>console.log(''.$js.'')</script>'');
}
puedes usar esto ...
console($myObject);
La salida será así ... tan genial, eh!
print_r()
es principalmente para la depuración. Si desea imprimirlo en ese formato, recorra la matriz e imprima los elementos.
foreach($data as $d){
foreach($d as $v){
echo $v."/n";
}
}
<?php
//Make an array readable as string
function array_read($array, $seperator = '', '', $ending = '' and ''){
$opt = count($array);
return $opt > 1 ? implode($seperator,array_slice($array,0,$opt-1)).$ending.end($array) : $array[0];
}
?>
Lo uso para mostrar una bonita matriz impresa a mis visitantes
echo ''<pre>'';
foreach($data as $entry){
foreach($entry as $entry2){
echo $entry2.''<br />'';
}
}
foreach($array as $v) echo $v, PHP_EOL;
print("<pre>".print_r($data,true)."</pre>");