【发布时间】:2021-11-30 20:08:27
【问题描述】:
我有一本字典,其中键和值都是字符串。我想在自己的行上打印每个键值对,其中键左对齐,值右对齐。
Key1 Test
Key2 BlahBlah
等等……
在 PHP 中执行此操作的最佳方法是什么?也许用 printf 做一个聪明的方法?
【问题讨论】:
我有一本字典,其中键和值都是字符串。我想在自己的行上打印每个键值对,其中键左对齐,值右对齐。
Key1 Test
Key2 BlahBlah
等等……
在 PHP 中执行此操作的最佳方法是什么?也许用 printf 做一个聪明的方法?
【问题讨论】:
试试这个:
printf("%-40s", "Test");
40 告诉 printf 填充字符串,使其占用 40 个字符(这是填充说明符)。 - 告诉在右边填充(这是对齐说明符)。
请参阅conversion specifications documenation。
所以,打印整个数组:
$max_key_length = max(array_map('strlen', array_keys($array)));
$max_value_length = max(array_map('strlen', $array));
foreach($array as $key => $value) {
printf("%-{$max_key_length}s %{$max_value_length}s\n", $key, $value);
}
【讨论】:
我不确定 PHP,但在 C 中,右对齐的解决方案是:
#include <stdio.h>
#include <math.h>
#include <stdio.h>
int main(){
char *Data="hello world";
printf("%20s\n",Data);
return 0;
}
输出:
...$ ./a.out
hello world
您过去也可以执行 % 20s,但现在在 C 中已弃用。另外,这里的另一个答案是错误的 %-20s 会将文本和空格左对齐到打印输出的右侧。
【讨论】: