- 締切済み
PHP 配列結果を保存する方法ですが
PHP5.0 apache2.0.58 mysql 5.0 という環境でプログラムを作成していますが難問にぶつかりました。 質問: http://www.sound-uz.jp/php/tips/file.html こちらのサイトでツリー表示のコードを拝見しながら 表示することはできましたがこの画面のイメージのまま メモ帳に保存できないですか?つまりループしながら 画面に表示させるのをメモ帳かファイル形式で保存させたいですがいい方法はありませんか? foreach( $tree as $key => $value ) { if( is_array( $value ) ) { // 配列の場合ディレクトリ名を表示し再帰呼出 print( $indent."+ " ."≪". $key ."≫". "<br>\n" ); showdirtree( $value ); } else{ $day = date("Y-m-d H:i", filemtime($value)); $size = ceil(filesize($value)/1024); // ファイル名と作成日とサイズを表示 print( $indent."- <a>" ."【". $key ."】"." "."作成日:(" . $day.") "."サイズ:" . " (".$size."KB)". "</a><br />\n" ); } } うえの部分は加工した部分です。 <hr> <p>こちらは print_r による表示</p> <pre><?php print_r( $tree ) ?></pre> こちらはHTMLで省いています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tany180sx
- ベストアンサー率63% (239/379)
まず $print .= をちゃんと書けば動きます。 print( $indent."+ " ."≪". $key ."≫". "<br>\n" ); なら $print .= $indent."+ " ."≪". $key ."≫". "<br>\n"; です。 たぶん関数化してそうなので、最後にreturn $print;は必要です。 ob_start() は#1がサンプルです。。 ob_get_contents() で printした出力を取得し、 ob_end_clean() で printで出力するはずだったものを消します。 この場合、先にヘッダー的なHTML等を出力しているのならそれも消えます。 この規模なら $print .= "" で取り込んでおいた方がいいかと。
- tany180sx
- ベストアンサー率63% (239/379)
print("・・・"); とせずに $print .= "・・・"; とでもして、 最後に$printをファイルに出力してみては? もしくは、 ob_start(); foreach () { ・・・ } $print = ob_get_contents(); ob_end_clean(); $printを保存、とか。
補足
早速のご返事ありがとうございます。 $print.="";形式でやってみましたが駄目でした。 下のOB_START()はネットで調べてみたが 似たようなサンプルがなくてマニュアルだけじゃ利用方法がわからないです。 すみません!初心者のもんで、、OB_START()--どこか似たようなサンプルがありましたら教えていただけないでしょうか?用は画面表示された結果をファイルにして保存しておきたいです。どうかよろしくおねがいします。