PHPでは変数や文字列をブラウザに出力する方法はいくつかありますが、分かりやすく出力したいときは、print_rを使用すると便利です。
この記事では、
・print_rとは
・print_rの基本的な出力方法
という基本的な内容から、
・print_rで出力結果を取得する方法
・print_rで出力結果をファイルに保存する方法
・var_dump、var_exportとの違い
などの応用的な使い方に関しても解説していきます。
今回はそんなprint_r関数について、わかりやすく解説します!
print_rとは?
PHPでは文字列や計算した結果を表示する方法はいくつかありますが、print_r関数を使用すると情報を分かりやすく出力することが可能です。
書き方:
print_r( 表示したい式や値 [, bool 返り値 ] )
引数:
第一引数に出力したい式や値を指定します。
第二引数にTRUEを指定した場合はprint_rの結果を取得できます。
返り値:
第二引数を指定した場合は出力結果の情報を返します。
返り値はstirng、integer、floatなどの型を指定した場合は、指定した型で出力します。
配列を指定した場合は、キーと値を表す形式で値が出力されます。
また、第二引数がTRUEのときはstringを返します。
print_rの使い方
以下にprint_r関数を使用して、連想配列の中身を出力する方法を記述します。
サンプルプログラム1
$fruits = ['item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; print_r($fruits);
実行結果:
Array ( [item1] => apple [item2] => orange [item3] => melon )
print_r関数を使用すれば、配列の値もわかりやすく出力されることがわかります。
以下のように多次元配列も、print_r関数を使用すれば結果が一目瞭然です!
サンプルプログラム2
$value_array = [ ['value1' => 'apple', 'value2' => 'orange', 'value3' => 'melon'], ['value1' => 'banana', 'value2' => 'pineapple', 'value3' => 'strawberry'] ]; print_r($value_array);
実行結果:
Array ( [0] => Array ( [value1] => apple [value2] => orange [value3] => melon ) [1] => Array ( [value1] => banana [value2] => pineapple [value3] => strawberry ) )
print_rの結果を変数で取得する
print_r関数は、前述したように第二引数にTRUEを指定すれば、結果を出力する代わりに返り値として取得できます。
サンプルプログラム
$fruits = ['item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; //TRUEを指定してprint_rの結果を取得する $result = print_r($fruits, TRUE); echo $result
実行結果:
Array ( [item1] => apple [item2] => orange [item3] => melon )
このように第二引数を使用すれば、print_r関数の出力結果を変数として保持できることがわかりますね!
print_rの結果をファイルに保存する
プログラムを実行時に、計算式やデータの内容を出力してファイルに保存したい場合もあります。
そのような場合はprint_r関数を使用して、出力した結果をファイルに保存することもできます。
以下にprint_r関数を使用して、出力結果をファイルに保存する方法を記述します。
サンプルプログラム
$fruits = ['item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; //バッファリングを有効にする ob_start(); //結果を出力 print_r($fruits); //バッファを取得 $buf = ob_get_contents(); //バッファをクリア ob_end_clean(); //ファイルを書き込みモードでオープン $fp = fopen('print_r.txt', 'w'); //バッファをファイルに書き込む fputs($fp, $buf); //ファイルを閉じる fclose($fp);
実行結果:(print_r.txtの内容)
Array ( [item1] => apple [item2] => orange [item3] => melon )
サンプルでは、ファイルに出力するためにob_startによってバッファを有効にし、その後にバッファリングしたい処理を記述して、ob_get_contentsでバッファを取得します。
fopen関数でファイル名と書き込みモードを’w’で指定し、fputs関数でバッファを出力しています。
print_rとvar_dump,var_exportの違い
PHPでは指定した変数や配列に関する情報を出力する方法として、print_rの他にもvar_dumpやvar_exportなどがあります。
var_dumpやvar_exportも変数に関する情報を出力するのに変わりありませんが、それぞれ出力方法が少し異なります。
サンプルプログラム
$fruits = ['item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; echo "*****print_r*****\n"; print_r($fruits); echo "*****var_dump*****\n"; var_dump($fruits); echo "*****var_export*****\n"; var_export($fruits);
実行結果:
*****print_r***** Array ( [item1] => apple [item2] => orange [item3] => melon ) *****var_dump***** array(3) { ["item1"]=> string(5) "apple" ["item2"]=> string(6) "orange" ["item3"]=> string(5) "melon" } *****var_export***** array ( 'item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon', )
それぞれ出力結果が少し異なることがわかりますね!
また、var_exportはprint_r同様に出力結果を戻り値として変数に格納することができます。
var_dumpはreturn引数が設定されないので注意しましょう。
まとめ
ここではprint_r関数を使用して、
・print_rの基本的な出力方法
・print_rで出力結果を取得する方法
・print_rで出力結果をファイルに保存する方法
・var_dump、var_exportとの違い
などについて説明しました。
print_r関数を使用すれば、多次元配列の値なども直感的に見やすく出力されますので、ぜひ覚えておきましょう。
もし、print_r関数の使い方を忘れてしまったら、この記事を思い出してくださいね!