用printf正确辩护

Jon*_*han 4 php printf

我有一本字典,键和值都是字符串.我想打印每个键值对在它自己的行上,键左对齐,值右对齐.

Key1        Test
Key2    BlahBlah
Run Code Online (Sandbox Code Playgroud)

等等...

在PHP中执行此操作的最佳方法是什么?也许是一个聪明的方法与printf?

Arn*_*anc 9

试试这个:

printf("%-40s", "Test");
Run Code Online (Sandbox Code Playgroud)

40,使得它需要40个字符(这是填充符)告诉的printf到垫的字符串.将-在合适的讲述垫(这是定位符).

请参阅转换规范文档.

所以,要打印整个数组:

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

在这里试试:http://codepad.org/ZVDk52ad

  • 这怎么有 11 票赞成?这是错误的,甚至帖子中链接的规范也说这是错误的。'-' 是左对齐,不是右对齐。那么谁在这里投票了错误的答案呢?如果人们这样做,是否会使 stackoverflow 变得无关紧要? (4认同)