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

作成日: 更新日:

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

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

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

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

基本的な使い方

構文(syntax)

<?php
print_r($variable_to_inspect);
?>

引数(parameters)

mixed $value, bool $return = false

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

戻り値(return)

string|true

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

サンプルコード

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

<?php

/**
 * PHPのprint_r関数を使用して、配列やオブジェクトの構造を読みやすく表示するサンプルコード。
 * 特にWebブラウザで実行した際に、改行が正しく表示されるようにする工夫を含みます。
 */
function showPrintRWithNewline(): void
{
    // 構造を持つサンプルデータ(配列)を定義します。
    $sampleData = [
        'name' => 'John Doe',
        'age' => 30,
        'occupation' => 'Software Engineer',
        'hobbies' => ['coding', 'reading', 'hiking'],
        'projects' => [
            'projectA' => ['status' => 'completed', 'version' => '1.0'],
            'projectB' => ['status' => 'in progress', 'deadline' => '2024-12-31']
        ]
    ];

    // Webブラウザでprint_rの出力が正しく改行されるように、<pre>タグを使用します。
    // <pre>タグは整形済みテキストを表示し、HTMLが改行や空白を無視しないようにします。
    echo "<p><strong>&lt;pre&gt;タグで囲んだ print_r の直接出力:</strong></p>";
    echo "<pre>";
    print_r($sampleData);
    echo "</pre>";

    // print_rの第二引数を true に設定すると、出力内容が文字列として返されます。
    // これを変数に格納し、後で処理したり表示したりすることができます。
    echo "<p><strong>print_r の戻り値を変数に格納し、&lt;pre&gt;タグで表示:</strong></p>";
    $outputString = print_r($sampleData, true);

    // HTMLとして安全に表示するため、htmlspecialchars() を使用することが推奨されます。
    // これにより、出力文字列中の特殊文字がHTMLエンティティに変換され、意図しないHTMLタグの解釈を防ぎます。
    echo "<pre>" . htmlspecialchars($outputString) . "</pre>";

    // 補足: CLI(コマンドラインインターフェース)で実行する場合、
    // <pre>タグや htmlspecialchars() は不要です。その場合は、以下のように直接出力しても改行は維持されます。
    // echo "\n--- CLIでの出力例 ---\n";
    // echo $outputString;
}

// 関数を実行して、サンプルコードの動作を確認します。
showPrintRWithNewline();

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()は不要です。実行環境に応じて使い分けください。

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