使用 str_pad 添加空格

发布于 2025-01-05 06:20:31 字数 596 浏览 1 评论 0原文

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

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',
));

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

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

I'm trying to print the contents of an array to the screen, but nicely indented:

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)).' => '.$value."\n";
    }
    echo '</pre>';
}

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

For some reason I don't get my output correctly indented.

It should add (max key length) - (key length) spaces. Or isn't my formula correct?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云胡 2025-01-12 06:20:31

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

因此,更改为

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

str_pad($key, $longest)

str_pad automatically pads to the length specified, you don't need to alter this number based on the length of the string currently being padded.

Therefore, change:

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

to

str_pad($key, $longest)
月亮坠入山谷 2025-01-12 06:20:31

我只是使用 printf 的格式来做到这一点。使用它代替您的回显线:

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

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

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

I'd just use printf's formatting to do this. Use this instead of your echo line:

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

Or, if you want right-align:

printf("%" . $longest . "s => $value\n", $key, $value);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文