配列を丸ごと保存して後で内容を確認したいとかいう場合、実はいまいち便利な関数がありません。
その場で表示するならvar_dump()するだけで中身を全部表示してくれますが、この関数、結果を返り値として受け取ることができません。
print_r()は結果を取得できますが、var_dump()程の詳細な情報は取得できません。
implode()は一次元配列しか使えませんし、serialize()だとPHPではわかりやすくても人間の目にはわかりづらくなってしまいます。
Pear::XML_Serializerに突っ込めば簡単にXMLになりますが、単に配列を表示したいだけなのにPearだのXMLだのをわざわざ使用するのもなんだかなーといった感じです。
結局foreachでぐるぐる回すといった力業になりがちです。
そんなときにバッファリング。
var_dump_buffering.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//なんか適当な配列
$arr=array(
1
,2
,3=>array(
'hoge'=>'fuga'
)
,4=>'aaaaa'
);
//文字列として取得
$ret=ob_var_dump($arr);
print($ret);
//var_dumpの中身を返す関数
function ob_var_dump($obj){
ob_start();
var_dump($obj);
$ret=ob_get_contents();
ob_end_clean();
return $ret;
}
|
出力を簡単に取得することができました。
これをそのままログに突っ込めば、後から人間に見やすい形になるでしょう。
まあ、この使い方はマニュアルに堂々と書いてあるんですがね。
http://jp.php.net/manual/ja/function.var-dump.php
PR
トラックバック
トラックバックURL: