我有一些数据,如:
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中实现这个的简单方法是什么?我想避免使用库来完成这么简单的任务.
使用 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所说,你可能想要先检查最长字符串的长度,否则你的桌子会被长串起来.
<?php
$renderer = new ArrayToTextTable($array);
echo $renderer->getTable();
Run Code Online (Sandbox Code Playgroud)
我知道这个问题很老了,但它出现在我的谷歌搜索中,也许对某人有帮助。
还有另一个 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)
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |