2014-06-06 87 views
2

當我陣列上使用<pre>print_r()它看起來是這樣的:在打印數組時,有沒有辦法使「=>」對齊?

[Pacific/Midway] => (GMT-11:00) Pacific, Midway 
[Pacific/Niue] => (GMT-11:00) Pacific, Niue 
[Pacific/Tahiti] => (GMT-10:00) Pacific, Tahiti 
[Pacific/Marquesas] => (GMT-09:30) Pacific, Marquesas 
[America/Adak] => (GMT-09:00) America, Adak 
[America/Anchorage] => (GMT-08:00) America, Anchorage 
[America/Juneau] => (GMT-08:00) America, Juneau 
[America/Metlakatla] => (GMT-08:00) America, Metlakatla 

這將是一個容易許多閱讀,如果它看起來像這樣:

[Pacific/Midway]  => (GMT-11:00) Pacific, Midway 
[Pacific/Niue]  => (GMT-11:00) Pacific, Niue 
[Pacific/Tahiti]  => (GMT-10:00) Pacific, Tahiti 
[Pacific/Marquesas] => (GMT-09:30) Pacific, Marquesas 
[America/Adak]  => (GMT-09:00) America, Adak 
[America/Anchorage] => (GMT-08:00) America, Anchorage 
[America/Juneau]  => (GMT-08:00) America, Juneau 
[America/Metlakatla] => (GMT-08:00) America, Metlakatla 

有打印出數組和對象(特別是數組)時執行此操作的任何方法?

+5

沒有。 var_dump/print_r是基本的調試輸出工具。他們沒有「花哨」的格式化功能。如果你想要漂亮的東西,你將不得不推出你自己的代碼來做到這一點。 –

+0

這可能是一個開始http://zavaboy.org/2011/11/09/php-improving-print_r-with-print_pre-wrapper-function/ –

回答

1

這裏有一個快速的功能做到這一點:

function format_array($a) 
    { 
    $k = array_keys($a); 
    $v = array_values($a); 
    $max_len = 0; 
    for ($i=0; $i<count($k); $i++) 
     $max_len = max(strlen($k[$i]), $max_len); 

    echo "<pre>"; 
    for ($i=0; $i<count($k); $i++) 
    { 
    echo str_pad($k[$i], $max_len)." => ".$v[$i]."\n"; 
    } 

    echo "</pre>"; 
    } 

用法示例:

$test = array("something" => 1, "something else" => 2, 
     "and yet another one" => 3, "a" => 4); 
format_array($test); 

輸出:

something   => 1 
something else  => 2 
and yet another one => 3 
a     => 4 
2

如果這是爲了調試目的。安裝Xdebug,並使用var_dump()。你會得到一個可愛的,漂亮的輸出。

它看起來像這樣:

Xdebug var_dump()

這樣,您就不必事情來處理數據的輸出雜波自己的代碼。它只是內置於PHP中。

無論如何,我建議安裝Xdebug,這是一個令人難以置信的工具,原因很多。

相關問題