【PHP入門】print_rで情報を出力する方法

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_dumpvar_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関数の使い方を忘れてしまったら、この記事を思い出してくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー