Si no quiere (o no permitidos por alguna razón) para utilizar las bibliotecas, puede utilizar PHP estándar printf
/sprintf
funciones.
El problema con ellos es que si tiene valores con ancho variable y no limitado, entonces deberá decidir si los valores largos se truncarán o romperán el diseño de la tabla.
Primer caso:
// fixed width
$mask = "|%5.5s |%-30.30s | x |\n";
printf($mask, 'Num', 'Title');
printf($mask, '1', 'A value that fits the cell');
printf($mask, '2', 'A too long value the end of which will be cut off');
La salida es
| Num |Title | x |
| 1 |A value that fits the cell | x |
| 2 |A too long value the end of wh | x |
Segundo caso:
// only min-width of cells is set
$mask = "|%5s |%-30s | x |\n";
printf($mask, 'Num', 'Title');
printf($mask, '1', 'A value that fits the cell');
printf($mask, '2', 'A too long value that will brake the table');
Y aquí obtenemos
| Num |Title | x |
| 1 |A value that fits the cell | x |
| 2 |A too long value that will brake the table | x |
Si ninguno de los dos satisface sus necesidades y realmente necesita una tabla con columnas con ancho de flujo, tendrá que calcular el ancho máximo de los valores en cada columna. Pero así es como funciona exactamente PEAR::Console_Table
.
Lo intenté, pero sprintf no funciona en mi caso :( – user519846
¿Por qué valores demasiado largos frenan la tabla? Entonces primero necesitas encontrar la cadena más larga en cada columna. Eso realmente parece reinventar una rueda, porque la solución PEAR sugerido por powtac hace eso por ti. Así que renuncio a mi respuesta y apoyo su. – Hnatt
+1 - Si no quieres optar por una biblioteca (todavía), 'sprintf' es un buen comienzo para la salida formateada, verifica los diferentes formatos disponibles: http://php.net/manual/en/function.sprintf.php - puede usar la misma máscara para la fila del encabezado de su tabla, así como las filas de datos. – hakre