【问题标题】:Right justifying with printf用 printf 右对齐
【发布时间】:2021-11-30 20:08:27
【问题描述】:

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

Key1        Test
Key2    BlahBlah

等等……

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

【问题讨论】:

    标签: php printf


    【解决方案1】:

    试试这个:

    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);
    }
    

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

    【讨论】:

    • 这怎么会有 11 票赞成?这是错误的,即使帖子中链接的规范也说它是错误的。 '-' 用于左对齐,而不是右对齐。那么谁在这里投票错误答案?如果人们这样做,是否会使 stackoverflow 变得无关紧要?
    【解决方案2】:

    我不确定 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 会将文本和空格左对齐到打印输出的右侧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      相关资源
      最近更新 更多