我正在尝试将数组的内容打印到屏幕上,但很好地缩进了:
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',
));
出于某种原因,我没有正确缩进输出。
它应该添加(最大密钥长度) - (密钥长度)空格。或者我的公式不正确?
答案 0 :(得分:1)
我只是使用printf的格式来执行此操作。使用它而不是回声线:
printf("%-" . $longest . "s => $value\n", $key, $value);
或者,如果你想要右对齐:
printf("%" . $longest . "s => $value\n", $key, $value);
答案 1 :(得分:1)
str_pad
会自动填充指定的长度,您无需根据当前填充的字符串长度更改此数字。
因此,改变:
str_pad($key, $longest - strlen($key))
到
str_pad($key, $longest)