使用str_pad追加空格

时间:2012-02-14 16:56:11

标签: php string padding

我正在尝试将数组的内容打印到屏幕上,但很好地缩进了:

function fu($var){
    $lengths = array_map('strlen', array_keys($var));
    $longest = max($lengths);

    echo '<pre>';
    foreach($var as $key => $value){
      echo str_pad($key, $longest - strlen($key)).' =&gt; '.$value."\n";
    }
    echo '</pre>';
}

fu(array(
   'foo'         => 5, 
   'foooooooooo' => 'xxx', 
   'abc'         => 5454545, 
   '1234567890'  => 34, 
   4352354       => 435, 
   'a'           => 'x',
));

出于某种原因,我没有正确缩进输出。

它应该添加(最大密钥长度) - (密钥长度)空格。或者我的公式不正确?

2 个答案:

答案 0 :(得分:1)

我只是使用printf的格式来执行此操作。使用它而不是回声线:

printf("%-" . $longest . "s =&gt; $value\n", $key, $value);

或者,如果你想要右对齐:

printf("%" . $longest . "s =&gt; $value\n", $key, $value);

答案 1 :(得分:1)

str_pad会自动填充指定的长度,您无需根据当前填充的字符串长度更改此数字。

因此,改变:

str_pad($key, $longest - strlen($key))

str_pad($key, $longest)