忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/07/21 17:50 |
PHP1-82:出力バッファリングのちょっとだけ便利な使い方

配列を丸ごと保存して後で内容を確認したいとかいう場合、実はいまいち便利な関数がありません。
その場で表示するなら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
<?php
    
    //なんか適当な配列
        $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


2009/06/30 19:38 | Comments(0) | TrackBack(1) | PHP

トラックバック

トラックバックURL:
一日目にfrontendアプリケーションを作成しましたが、このアプリケーションの具体的な実装はapps/frontendディレクトリに書いていくことになります。 まずapps/frontend/templates/layout.phpを見てみます。 このファイルは、index.phpおよびfrontend_dev.phpを呼び出したときに必ず呼び出されるテンプレートになります。 全体的なレイアウトをここで設定し、後ほど書いていく個別テンプレートは全部$sf_contentに入る、という形に...
弱小PHPerの憂鬱 | 2009/12/14 18:44

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP1-83:OSコマンドを直接実行 | HOME | JavaScript2-9:Qtip>>
忍者ブログ[PR]