【PHP8.x】print_r関数の使い方

print_r関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

print_r関数は、PHPにおいて変数の内容を人間が読みやすい形式で出力することや、その結果を文字列として取得することを目的に実行される関数です。この関数は、主にプログラムのデバッグ作業において、配列やオブジェクトのような複雑なデータ構造を持つ変数の内容を、階層構造を保ちながら整形して表示するために利用されます。

数値や文字列といった単純な変数に対しても使用できますが、その真価はネストされた配列やオブジェクトのプロパティを詳細に確認する際に発揮されます。プログラムの実行途中で、期待通りのデータが変数に格納されているか、または予期せぬ値や構造になっていないかを確認する上で非常に有効です。

print_r関数は、検査したい変数を最初の引数として受け取ります。そして、デフォルトではその結果を標準出力に直接表示します。しかし、オプションとして2つ目の引数にブール値trueを渡すことで、表示結果を文字列として関数の戻り値として取得することができます。この機能により、出力された情報をファイルに書き込んだり、別の変数に格納してさらに加工したりといった柔軟な処理が可能になります。

この関数は、PHPのバージョン8においても変わらず、開発者が変数の内部状態を素早く視覚的に把握するための基本的なデバッグ支援ツールとして広く活用されています。データフローの追跡やエラーの原因特定において、非常に頼りになる機能です。

構文(syntax)

1<?php
2print_r($variable_to_inspect);
3?>

引数(parameters)

mixed $value, bool $return = false

  • mixed $value: 出力したい値(文字列、数値、配列、オブジェクトなど、PHPで扱えるほとんどの値)
  • bool $return = false: trueを指定すると、値を出力せずに文字列として返します

戻り値(return)

string|true

print_r関数は、変数の内容を人間が読みやすい形式で文字列として返します。 ただし、変数がリソース型の場合や、出力バッファリングが有効な場合はtrueを返します。

サンプルコード

PHP print_rで変数の内容を表示・取得する

1<?php
2
3// print_r関数の使用例
4
5// 1. 配列の例
6$userData = [
7    'id' => 1,
8    'name' => 'John Doe',
9    'email' => 'john.doe@example.com',
10    'roles' => ['admin', 'editor'],
11    'isActive' => true,
12];
13
14// 2. オブジェクトの例
15// システムエンジニアを目指す初心者にも分かりやすいよう、シンプルなstdClassを使用
16$productData = new stdClass();
17$productData->productId = 'P001';
18$productData->name = 'Example Gadget';
19$productData->price = 99.99;
20$productData->available = true;
21
22echo "--- 配列の情報を直接出力する例 ---" . PHP_EOL;
23// print_r の最も基本的な使い方: 変数の内容を人間が読める形式で直接出力します。
24// 特に配列やオブジェクトのデバッグ時によく利用されます。
25print_r($userData);
26echo PHP_EOL; // 出力を見やすくするための改行
27
28echo "--- オブジェクトの情報を直接出力する例 ---" . PHP_EOL;
29// オブジェクトの内容も同様に直接出力できます。
30print_r($productData);
31echo PHP_EOL; // 出力を見やすくするための改行
32
33echo "--- 出力結果を文字列として取得する例 ---" . PHP_EOL;
34// print_r の第二引数に 'true' を設定すると、内容は直接出力されず、文字列として返されます。
35// これにより、出力結果を後でファイルに書き込んだり、別の文字列と結合して利用することができます。
36$userDataString = print_r($userData, true);
37
38echo "変数に格納された配列の内容 (文字列形式):" . PHP_EOL;
39echo $userDataString; // 取得した文字列を出力
40echo PHP_EOL;
41
42?>

PHPのprint_r関数は、指定した変数の内容を人間が読める形式で表示するための便利な関数です。特に、配列やオブジェクトといった複雑なデータ構造の中身を確認したい場合、プログラムのデバッグ作業で非常に役立ちます。

この関数は、第一引数に検査したい$value(変数)を指定します。例えば、サンプルコードのように配列やオブジェクトを渡すと、その構造と格納されている値が整形されて出力されます。これにより、プログラムの実行中に変数がどのような状態になっているかを一目で把握できます。

第二引数の$returnはオプションで、デフォルトはfalseです。この引数にtrueを指定すると、内容は画面に直接出力されず、代わりに整形された文字列として戻り値で返されます。これにより、出力結果を別の変数に格納し、ファイルに保存したり、他の文字列と結合したりするなど、柔軟に利用することが可能になります。

戻り値は、$returntrueの場合は整形されたstring(文字列)を返します。$returnfalse(デフォルト)の場合は、出力が成功したことを示すブール値のtrueを返します。サンプルコードでは、配列やオブジェクトの内容を直接出力する例と、第二引数をtrueにして文字列として取得し、その後出力する例が示されており、それぞれの使い方がよく分かります。

print_r関数は、配列やオブジェクトなど、変数の内容を人間が読める形式でデバッグ目的で確認する際に役立ちます。特に重要なのは第二引数です。これをtrueに設定すると、整形された内容が直接出力されず、文字列として取得できます。これにより、デバッグ情報をログファイルに書き込んだり、他のメッセージと組み合わせて表示したりと、出力結果を柔軟に扱えるようになります。デフォルトのfalseの場合、関数は直接出力を行い、戻り値は常にtrueです。システム内部の情報が表示されるため、本番環境でユーザーに直接見せることは避け、情報漏洩のリスクに十分注意し、開発・デバッグ用途に限定して利用してください。

PHP print_r の出力を改行して表示する

1<?php
2
3/**
4 * PHPのprint_r関数を使用して、配列やオブジェクトの構造を読みやすく表示するサンプルコード。
5 * 特にWebブラウザで実行した際に、改行が正しく表示されるようにする工夫を含みます。
6 */
7function showPrintRWithNewline(): void
8{
9    // 構造を持つサンプルデータ(配列)を定義します。
10    $sampleData = [
11        'name' => 'John Doe',
12        'age' => 30,
13        'occupation' => 'Software Engineer',
14        'hobbies' => ['coding', 'reading', 'hiking'],
15        'projects' => [
16            'projectA' => ['status' => 'completed', 'version' => '1.0'],
17            'projectB' => ['status' => 'in progress', 'deadline' => '2024-12-31']
18        ]
19    ];
20
21    // Webブラウザでprint_rの出力が正しく改行されるように、<pre>タグを使用します。
22    // <pre>タグは整形済みテキストを表示し、HTMLが改行や空白を無視しないようにします。
23    echo "<p><strong>&lt;pre&gt;タグで囲んだ print_r の直接出力:</strong></p>";
24    echo "<pre>";
25    print_r($sampleData);
26    echo "</pre>";
27
28    // print_rの第二引数を true に設定すると、出力内容が文字列として返されます。
29    // これを変数に格納し、後で処理したり表示したりすることができます。
30    echo "<p><strong>print_r の戻り値を変数に格納し、&lt;pre&gt;タグで表示:</strong></p>";
31    $outputString = print_r($sampleData, true);
32
33    // HTMLとして安全に表示するため、htmlspecialchars() を使用することが推奨されます。
34    // これにより、出力文字列中の特殊文字がHTMLエンティティに変換され、意図しないHTMLタグの解釈を防ぎます。
35    echo "<pre>" . htmlspecialchars($outputString) . "</pre>";
36
37    // 補足: CLI(コマンドラインインターフェース)で実行する場合、
38    // <pre>タグや htmlspecialchars() は不要です。その場合は、以下のように直接出力しても改行は維持されます。
39    // echo "\n--- CLIでの出力例 ---\n";
40    // echo $outputString;
41}
42
43// 関数を実行して、サンプルコードの動作を確認します。
44showPrintRWithNewline();

PHPのprint_r関数は、配列やオブジェクトなどの複雑な変数の構造を、人間が読みやすい形式で表示するためのデバッグ用関数です。プログラムの実行中に変数の内容を確認したい場合に特に役立ちます。

この関数は、表示したい変数(配列やオブジェクトなど)を第一引数$valueとして受け取ります。第二引数$returntrueに設定すると、通常標準出力に直接表示される内容が文字列として返され、変数に格納して後で処理することができます。この場合の戻り値は文字列型です。$returnがデフォルトのfalseの場合、内容は直接標準出力に表示され、関数自体の戻り値はブール型のtrueとなります。

Webブラウザでprint_rの出力を表示する際、HTMLの特性により改行や空白が無視されてしまうことがあります。これを防ぐため、サンプルコードでは出力全体をHTMLの<pre>タグで囲んでいます。<pre>タグは整形済みテキストとして認識されるため、改行やスペースをそのままの形で表示できます。

さらに、print_rの戻り値をhtmlspecialchars()関数で処理することで、出力文字列に含まれる特殊文字(例: <>)がHTMLエンティティに変換され、意図しないHTMLタグとして解釈されることを防ぎ、安全に表示することが推奨されます。コマンドラインインターフェース(CLI)で実行する場合は、これらのHTMLタグやエスケープ処理は不要で、改行は自然に維持されます。

print_rは、配列やオブジェクトの構造をデバッグ目的で表示する際に便利な関数です。Webブラウザで出力する際は、改行が正しく表示されるよう、必ず出力全体を<pre>タグで囲むことが必須です。

第二引数をtrueに設定すると、出力内容が文字列として返されます。この文字列をHTMLとして表示する場合は、htmlspecialchars()関数で特殊文字をエスケープし、安全に表示してください。コマンドラインインターフェース(CLI)では<pre>タグやhtmlspecialchars()は不要です。実行環境に応じて使い分けください。

PHP print_rで配列の内容を確認する

1<?php
2
3/**
4 * print_r() を使用して配列の内容を確認するサンプル関数
5 *
6 * この関数は、Webサーバー環境で実行することを想定しています。
7 * ブラウザでアクセスすると、整形された結果が表示されます。
8 */
9function displayArrayWithPrintR(): void
10{
11    // 確認用のサンプル配列を作成します。
12    // この配列は、ユーザーのプロフィール情報を模しています。
13    $userProfile = [
14        'id' => 101,
15        'name' => 'Taro Yamada',
16        'age' => 30,
17        'skills' => ['PHP', 'JavaScript', 'MySQL'],
18        'isActive' => true,
19    ];
20
21    // --- パターン1: 結果を直接出力する (デフォルトの動作) ---
22    // デバッグ目的で配列の構造を素早く確認したい場合に便利です。
23    // <pre> タグで囲むと、改行やインデントがブラウザ上で保持され、見やすくなります。
24    echo '<h2>配列の内容を直接出力</h2>';
25    echo '<pre>';
26    print_r($userProfile);
27    echo '</pre>';
28
29
30    // --- パターン2: 結果を文字列として変数に格納する ---
31    // 第2引数に true を指定すると、結果は画面に出力されず、文字列として返されます。
32    // ログファイルへの記録や、メール本文への埋め込みなど、出力を加工したい場合に利用します。
33    $arrayAsString = print_r($userProfile, true);
34
35    echo '<h2>配列の内容を文字列として変数に格納してから出力</h2>';
36    echo '<pre>';
37    // htmlspecialchars() を使って、安全な形で文字列を出力します。
38    echo htmlspecialchars($arrayAsString, ENT_QUOTES, 'UTF-8');
39    echo '</pre>';
40}
41
42// 上記で定義した関数を実行します。
43displayArrayWithPrintR();

PHPのprint_r関数は、主にデバッグ目的で、変数の中身を人間が読みやすい形式で表示するために使用されます。特に配列やオブジェクトの構造と内容を詳細に確認したい場合に役立ちます。

この関数は、引数として$valueに表示したい任意の値を指定します。第2引数$returnはオプションで、trueを指定すると、結果は画面に直接出力されずに文字列として返されます。デフォルトはfalseで、その場合は結果が直接出力されます。戻り値は、$returntrueのときに内容を表す文字列、falseのときは常にtrueです。

サンプルコードの最初のパターンでは、print_r($userProfile)のように第2引数を省略することで、$userProfile配列の内容がWebページに直接出力されます。Webブラウザで結果を整形して見やすくするため、<pre>タグで囲むことが一般的です。これにより、改行やインデントが保持され、複雑な配列構造も理解しやすくなります。

2番目のパターンでは、print_r($userProfile, true)と第2引数にtrueを指定しています。これにより、配列の内容は画面には出力されず、結果が文字列として$arrayAsString変数に格納されます。この機能は、ログファイルに記録したり、メール本文に埋め込んだりするなど、出力を加工して再利用したい場合に非常に便利です。Webページに出力する際は、HTML特殊文字をエスケープするためにhtmlspecialchars()関数を併用することで、安全に表示できます。

print_rは、開発中に変数の状態を素早く把握するための強力なデバッグツールとして活用できます。

print_r()関数は、主にデバッグ目的で変数の中身を素早く確認する際に利用されます。Webブラウザで結果を見やすくするには、print_r()の出力を必ず<pre>タグで囲むことが重要です。これを怠ると、改行やインデントがブラウザで無視され、表示が崩れてしまいます。

第2引数にtrueを指定すると、結果は画面に出力されず、整形された文字列として戻り値で取得できます。この文字列をログファイルに記録したり、他の処理で加工したりする際に便利です。特に、ユーザーからの入力などを含む配列を出力する場合、セキュリティのためにhtmlspecialchars()関数などでエスケープ処理をしてからHTMLとして表示することを強く推奨します。本番環境でユーザーに直接見せる情報としては不適切な場合が多い点にご注意ください。

関連コンテンツ

【PHP8.x】print_r関数の使い方 | いっしー@Webエンジニア