如何在PHP中的控制台上进行对齐

use*_*846 27 php console command-line alignment

我试图通过PHP中的命令提示符运行脚本,并尝试以表格形式显示结果.但由于单词的字符长度不同,我无法正确对齐显示结果.

我想要这样的结果

Book                  ISBN      Department
Operating System      101       CS
C                     102       CS
java                  103       CS
Run Code Online (Sandbox Code Playgroud)

谁能帮助我在控制台上的php中获得这样的输出.

提前致谢

Hna*_*att 61

如果您不希望(或由于某种原因不允许)使用库,您可以使用标准的php printf/ sprintf函数.

他们的问题是,如果你有宽度可变和非限制的值,那么你将不得不决定是否会截断长值或者破坏表格的布局.

第一种情况:

// 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');
Run Code Online (Sandbox Code Playgroud)

输出是

|  Num |Title                          | x |
|    1 |A value that fits the cell     | x |
|    2 |A too long value the end of wh | x |
Run Code Online (Sandbox Code Playgroud)

第二种情况:

// 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');
Run Code Online (Sandbox Code Playgroud)

我们得到了

|  Num |Title                          | x |
|    1 |A value that fits the cell     | x |
|    2 |A too long value that will brake the table | x |
Run Code Online (Sandbox Code Playgroud)

如果这两者都不能满足您的需求,并且您确实需要一个具有流动宽度列的表,那么您必须计算每列中的最大值.但这才是PEAR::Console_Table真正有效的.


pow*_*tac 32

您可以使用PEAR :: Console_Table:

Console_Table可帮助您在终端/ shell /控制台上显示表格数据.

例:

require_once 'Console/Table.php';

$tbl = new Console_Table();

$tbl->setHeaders(array('Language', 'Year'));

$tbl->addRow(array('PHP', 1994));
$tbl->addRow(array('C',   1970));
$tbl->addRow(array('C++', 1983));

echo $tbl->getTable();
Run Code Online (Sandbox Code Playgroud)

输出:

+----------+------+
| Language | Year |
+----------+------+
| PHP      | 1994 |
| C        | 1970 |
| C++      | 1983 |
+----------+------+
Run Code Online (Sandbox Code Playgroud)


小智 8

您最好的选择是使用Pear Package Console_Table(http://pear.php.net/package/Console_Table/).

要使用 - 在控制台上,您需要安装pear包,运行:

pear install Console_Table
Run Code Online (Sandbox Code Playgroud)

这应该下载包并安装.然后,您可以使用示例脚本,例如:

require_once 'Console/Table.php';

$tbl = new Console_Table();
$tbl->setHeaders(
    array('Language', 'Year')
);
$tbl->addRow(array('PHP', 1994));
$tbl->addRow(array('C',   1970));
$tbl->addRow(array('C++', 1983));

echo $tbl->getTable();
Run Code Online (Sandbox Code Playgroud)