var_dumpよりログ作成に便利なvar_export

PHPで変数をダンプしたいとき

PHPでプログラムを書いていて、処理の一時点での変数の値を参照したいとき。通常であれば、var_dumpやprint_rなどの関数を使います。

$ar = array(
array(1,"愛媛県",array("県庁所在地" => "松山","名物" => "みかん")),
array(2,"香川県",array("県庁所在地" => "高松","名物" => "うどん"))
);
 
//var_dumpの場合
var_dump($ar);
//標準出力への出力結果
array(2) { [0]=> array(3) { [0]=> int(1) [1]=> string(9) "愛媛県" [2]=> array(2) { ["県庁所在地"]=> string(6) "松山" ["名物"]=> string(9) "みかん" } } [1]=> array(3) { [0]=> int(2) [1]=> string(9) "香川県" [2]=> array(2) { ["県庁所在地"]=> string(6) "高松" ["名物"]=> string(9) "うどん" } } }
 
//print_rの場合
print_r($ar);
//標準出力への出力結果
Array ( [0] => Array ( [0] => 1 [1] => 愛媛県 [2] => Array ( [県庁所在地] => 松山 [名物] => みかん ) ) [1] => Array ( [0] => 2 [1] => 香川県 [2] => Array ( [県庁所在地] => 高松 [名物] => うどん ) ) )

var_dumpとprint_rの違いについては、print_rの方が変数を見やすく出力してくれるという説明がされています。変数型のような余計なものがついていませんが、値の確認程度ならprint_rでも間に合いますね。

変数のダンプ結果を文字列として扱いたいとき

通常のダンプだけでなく、たとえばある時点での変数の値をデータベースに格納したい場合、特定のメールアドレスに送信してログを残したい場合、などは、一度標準出力をob_startとob_get_contentsなどを使ってバッファリングした上でvar_dumpなど行う必要があるように思えます。
それらを一緒くたに、変数を展開して即文字列型にしてしまうのがvar_export関数です。

var_export関数は引数を二つとり、第一引数が文字列に展開する変数、第二引数がブーリアン型で、falseならばそのまま標準出力に出力、trueならば出力はせず、返り値として文字列を返します(デフォルトはfalse)。

$ar = array(
array(1,"愛媛県",array("県庁所在地" => "松山","名物" => "みかん")),
array(2,"香川県",array("県庁所在地" => "高松","名物" => "うどん"))
);
 
//var_export
var_export($ar);
//標準出力への出力結果
array ( 0 => array ( 0 => 1, 1 => '愛媛県', 2 => array ( '県庁所在地' => '松山', '名物' => 'みかん', ), ), 1 => array ( 0 => 2, 1 => '香川県', 2 => array ( '県庁所在地' => '高松', '名物' => 'うどん', ), ), )
 
//var_exportの第二引数にtrueを指定して変数に格納
$return = var_export($ar,true);

var_exportの出力は、print_rと同じように変数型については省略のようですね。また、配列の最後には、次に続く要素が無くてもカンマをつける癖があるみたいです。細部に注意は必要ですが、これでログの作成が容易になります。


コメントを残す

メールアドレスが公開されることはありません。