2012-02-14 78 views
1

追加空格我試圖打印數組的內容到屏幕上,但很好地縮進:與str_pad

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

出於某種原因,我沒有得到我的正確輸出縮進。

它應該添加(最大密鑰長度) - (密鑰長度)空間。或者我的公式不正確?

+1

你試圖print_r的?或者這不是爲了調試? – 2012-02-14 16:59:28

回答

1

str_pad自動墊指定的長度,則無需在此基礎上數量改變使用這個,而不是你的回聲線當前正在填充的字符串的長度。

因此,更改:

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

str_pad($key, $longest) 
1

我只是使用printf的格式來做到這一點。如果你想右對齊

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

或者:

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