如何在PHP中输出一个简单的ascii表?

Jua*_*nti 4 php ascii tabular

我有一些数据,如:

Array
(
    [0] => Array
        (
            [a] => largeeeerrrrr
            [b] => 0
            [c] => 47
            [d] => 0
        )

    [1] => Array
        (
            [a] => bla
            [b] => 1
            [c] => 0
            [d] => 0
        )

    [2] => Array
        (
            [a] => bla3
            [b] => 0
            [c] => 0
            [d] => 0
        )

)
Run Code Online (Sandbox Code Playgroud)

我想产生如下输出:

title1        | title2 | title3 | title4
largeeeerrrrr | 0      | 47     | 0
bla           | 1      | 0      | 0
bla3          | 0      | 0      | 0
Run Code Online (Sandbox Code Playgroud)

在PHP中实现这个的简单方法是什么?我想避免使用库来完成这么简单的任务.

Byr*_*ock 9

使用 printf

$i=0;
foreach( $itemlist as $items)
{
 foreach ($items as $key => $value)
 {
   if ($i++==0) // print header
   {
     printf("[%010s]|",   $key );
     echo "\n";
   }
   printf("[%010s]|",   $value);
 }
 echo "\n"; // don't forget the newline at the end of the row!
}
Run Code Online (Sandbox Code Playgroud)

这使用10个填充空间.正如BoltClock所说,你可能想要先检查最长字符串的长度,否则你的桌子会被长串起来.


Son*_*ony 6

另一个具有自动列宽的

 <?php
 $renderer = new ArrayToTextTable($array);
 echo $renderer->getTable();
Run Code Online (Sandbox Code Playgroud)


fer*_*vio 5

我知道这个问题很老了,但它出现在我的谷歌搜索中,也许对某人有帮助。

还有另一个 Stackoverflow 问题有很好的答案,尤其是这个指向 Zend Framework 模块Zend/Text/Table 的问题

希望有帮助。


文档介绍

Zend\Text\Table是一个使用装饰器动态创建基于文本的表格的组件。这对于在文本电子邮件中发送结构化数据或在 CLI 应用程序中显示表格信息很有帮助。Zend\Text\Table支持多行列、列跨度和对齐方式。


基本用法

$table = new Zend\Text\Table\Table(['columnWidths' => [10, 20]]);

// Either simple
$table->appendRow(['Zend', 'Framework']);

// Or verbose
$row = new Zend\Text\Table\Row();

$row->appendColumn(new Zend\Text\Table\Column('Zend'));
$row->appendColumn(new Zend\Text\Table\Column('Framework'));

$table->appendRow($row);

echo $table;
Run Code Online (Sandbox Code Playgroud) 输出
?????????????????????????????????
?Zend      ?Framework           ?
|??????????|????????????????????|
?Zend      ?Framework           ?
?????????????????????????????????
Run Code Online (Sandbox Code Playgroud)