2011-02-18 7 views
108

var_dump,var_exportprint_rの違いは何ですか?var_dump、var_export&print_rの相違点

+13

時には、他の人にマニュアルを読んで理解してもらうほうが簡単かもしれません。 –

+7

@Your Common Sense S.O.答えはしばしば明確で、より簡潔で実用的であり、基本的に常にPHPマニュアルよりも参照が容易です。 –

答えて

165

var_dumpはデバッグ用です。 var_dumpは常に結果を出力します。

// var_dump(array('', false, 42, array('42'))); 
array(4) { 
    [0]=> string(0) "" 
    [1]=> bool(false) 
    [2]=> int(42) 
    [3]=> array(1) {[0]=>string(2) "42")} 
} 

は、デバッグ目的でもありますが、メンバーのタイプは含まれません。配列内の要素の型を知っている場合は使用することをお勧めしますが、そうでない場合は誤解を招く可能性があります。 print_rはデフォルトで結果を出力しますが、オプションの$returnパラメータを使用する代わりに文字列として返すことができます。

Array (
    [0] => 
    [1] => 
    [2] => 42 
    [3] => Array ([0] => 42) 
) 

var_export有効なPHPコードを出力します。いくつかの値を計算し、その結果を別のスクリプトで定数としたい場合に便利です。 var_exportは、参照サイクル/再帰配列を扱うことができませんが、var_dumpprint_rはこれらをチェックします。 var_exportはデフォルトで結果を出力しますが、オプションの$returnパラメータを使用する代わりに文字列として返すことができます。

array (
    0 => '', 
    2 => false, 
    2 => 42, 
    3 => array (0 => '42',), 
) 

は個人的に、私はvar_exportが簡潔で正確なの最善の妥協点だと思います。

+45

'var_export'は性質上、再帰的な配列に対しては恐ろしい再帰的な死を迎えることに注意してください。 'print_r'と' var_dump'(しかし、私は通常それを使用しないので、後者については完全にはわかりません)には、その問題はありません。だから 'var_export($ _ GLOBALS);'は、(それ自身を含んでいます)。 :) – pinkgothic

+6

このコメントは読めることが重要です。答えには本当に追加する必要があります。 – ftrotter

+0

@ftrotter私はいつもそのコメントが好奇心を説明すると思っていましたが、そこに行くと、答えに短い注釈が追加されました。 – phihag

2

var_dumpvar_exportmanualから)このような関係

でvar_export()与えられた変数に関する 情報を構造化されます。 これはvar_dump()に似ていますが、 例外はありません。戻り値 は有効なPHPコードです。

print_rとは異なり、var_dumpは要素のデータ型やサイズなどの詳細情報をエクスポートします。