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)