PHPで変数の内容をdumpする方法について

採用はこちら

PHPで変数の内容を確認したい場合は、主に var_dump()print_r()var_export() などを使用します。

なかでも var_dump() は、変数の値だけでなくデータ型や配列の構造まで確認できるため、PHPのデバッグで非常によく使われる関数です。

PHP標準には dump() という名前の関数はありません。

そのため、PHPで「変数をdumpする」という場合は、一般的に var_dump() などを使って変数の内容を出力することを意味します。

目次

PHPのvar_dump()とは

var_dump() は、指定した値の型と内容を詳しく表示するPHP標準関数です。

文字列、整数、浮動小数点数、boolean、null、配列、オブジェクトなど、さまざまなデータを確認できます。

var_dump()の基本的な書き方

基本構文は次のとおりです。

var_dump($value);

例えば、文字列が代入された変数を確認してみます。

$name = 'Taro';

var_dump($name);

出力例は次のようになります。

string(4) "Taro"

string はデータ型が文字列であることを表しています。

(4) は文字列のバイト数です。

そのため、日本語のようなマルチバイト文字では、表示される数字と見た目の文字数が一致しない場合があります。

var_dump()で数値を確認する方法

整数をdumpする

整数を var_dump() で確認すると、int として表示されます。

$age = 30;

var_dump($age);

出力例は次のとおりです。

int(30)

小数をdumpする

浮動小数点数の場合は float と表示されます。

$price = 1200.5;

var_dump($price);

出力例です。

float(1200.5)

このように var_dump() を使うと、単純な値だけでなく、その値が整数なのか浮動小数点数なのかまで確認できます。

booleanをdumpする方法

boolean型の値も var_dump() で簡単に確認できます。

$isLogin = true;

var_dump($isLogin);

出力例です。

bool(true)

false の場合は次のようになります。

$isLogin = false;

var_dump($isLogin);
bool(false)

boolean値の確認では、echo より var_dump() のほうが適しています。

例えば、次のコードでは false を画面上で確認しにくくなります。

$value = false;

echo $value;

一方で var_dump() を使用すれば、次のように明確に確認できます。

var_dump($value);
bool(false)

nullをdumpする方法

変数が null であるかを確認したい場合も var_dump() が便利です。

$value = null;

var_dump($value);

出力例です。

NULL

PHPでは、空文字列、整数の0、booleanのfalse、nullはそれぞれ異なる値です。

var_dump('');
var_dump(0);
var_dump(false);
var_dump(null);

出力例は次のようになります。

string(0) ""
int(0)
bool(false)
NULL

値だけを見ると区別しにくいケースでも、var_dump() を使用すればデータ型まで含めて確認できます。

配列をdumpする方法

var_dump()で配列を確認する

配列の中身を確認するときにも var_dump() を利用できます。

$user = [
    'name' => 'Taro',
    'age' => 30,
    'active' => true,
];

var_dump($user);

配列の要素数、キー、値、データ型などが階層的に表示されます。

APIレスポンスやフォームデータ、データベースから取得したデータの構造を確認するときに便利です。

preタグでdump結果を見やすくする

Webブラウザ上で var_dump() の結果を確認すると、複雑な配列では表示が読みにくくなることがあります。

その場合はHTMLの <pre> タグを組み合わせる方法があります。

echo '<pre>';
var_dump($user);
echo '</pre>';

<pre> タグ内では改行や空白がそのまま表示されるため、配列やオブジェクトの構造を確認しやすくなります。

ただし、本番環境でデバッグ情報を直接画面に表示すると、機密情報が漏れる可能性があります。

開発環境での利用を基本としましょう。

複数の変数をまとめてdumpする方法

var_dump() には、複数の値をまとめて渡すこともできます。

$name = 'Taro';
$age = 30;
$isAdmin = false;

var_dump($name, $age, $isAdmin);

指定した値が順番に出力されます。

複数の変数を同時に確認するときに便利です。

ただし、変数の数が多いと、どの出力がどの変数なのか分かりにくくなることがあります。

その場合はラベルを付ける方法があります。

echo 'name: ';
var_dump($name);

echo 'age: ';
var_dump($age);

print_r()で変数をdumpする方法

print_r() も、PHPで変数の内容を確認するときによく使用される関数です。

特に配列の内容を簡潔に確認したい場合に便利です。

print_r()の基本的な使い方

$user = [
    'name' => 'Taro',
    'age' => 30,
];

print_r($user);

print_r() は、配列やオブジェクトの内容を人間が読みやすい形式で表示します。

var_dump()とprint_r()の違い

var_dump()print_r() の大きな違いは、データ型の情報量です。

例えば次の変数があります。

$value = '123';

var_dump() を使用すると次のように表示されます。

var_dump($value);
string(3) "123"

文字列であることが明確に分かります。

一方で print_r() の場合は次のようになります。

print_r($value);
123

値は確認できますが、整数の123なのか文字列の"123"なのかを出力だけで判断しにくくなります。

データ型まで詳しく調べたい場合は var_dump() が適しています。

print_r()の結果を文字列として取得する方法

print_r() の第2引数に true を指定すると、結果を直接表示せず文字列として取得できます。

$user = [
    'name' => 'Taro',
    'age' => 30,
];

$result = print_r($user, true);

この方法は、ログに変数の内容を出力するときに便利です。

error_log(print_r($user, true));

ブラウザ上にデバッグ情報を表示したくない場合にも利用できます。

var_export()で変数をdumpする方法

var_export() は、指定した値についてPHPで解析可能な文字列表現を出力または返す関数です。

var_export()の基本的な使い方

$user = [
    'name' => 'Taro',
    'age' => 30,
];

var_export($user);

出力例は次のようになります。

array (
  'name' => 'Taro',
  'age' => 30,
)

print_r() と比較すると、PHPコードに近い形式で表示されるのが特徴です。

var_export()の結果を文字列で取得する

第2引数に true を指定すると、結果を画面に表示せず文字列として取得できます。

$result = var_export($user, true);

ログに保存する場合は次のように記述できます。

error_log(var_export($user, true));

オブジェクトをdumpする方法

var_dump() はオブジェクトの確認にも利用できます。

例えば次のようなクラスがあるとします。

class User
{
    public string $name = 'Taro';
    public int $age = 30;
}

$user = new User();

var_dump($user);

オブジェクトをdumpすると、クラス名やプロパティ、各プロパティの値などを確認できます。

オブジェクトが期待したクラスのインスタンスになっているか、プロパティにどのような値が設定されているかを調べる場合に便利です。

__debugInfo()が定義されている場合

PHPのクラスには __debugInfo() というマジックメソッドを定義できます。

クラスに __debugInfo() が実装されている場合、var_dump() ではそのメソッドが返した内容が表示されます。

例えば次のように記述できます。

class User
{
    private string $password = 'secret';

    public string $name = 'Taro';

    public function __debugInfo(): array
    {
        return [
            'name' => $this->name,
        ];
    }
}

$user = new User();

var_dump($user);

この仕組みを利用すると、デバッグ時に表示する情報を制御できます。

dumpしたあとに処理を停止する方法

変数の内容を確認した時点でPHPの処理を終了したい場合は、die() または exit を組み合わせます。

var_dump()とdie()を組み合わせる

var_dump($user);
die();

var_dump()とexitを組み合わせる

var_dump($user);
exit;

これ以降のコードは実行されません。

「この時点で変数に何が入っているかだけを確認したい」というデバッグでは便利です。

ただし、デバッグ終了後に die()exit を削除し忘れると、アプリケーションの処理が途中で停止してしまうため注意が必要です。

変数の内容をログにdumpする方法

WebサイトやAPIでは、変数の内容をブラウザへ直接表示するより、ログに記録したほうが適している場合があります。

print_r()とerror_log()を組み合わせる

error_log(print_r($user, true));

print_r() の第2引数を true にすると文字列として取得できるため、その結果を error_log() へ渡せます。

var_export()とerror_log()を組み合わせる

error_log(var_export($user, true));

ログの実際の保存先は、PHPやWebサーバーの設定によって異なります。

API開発では、var_dump() の内容をレスポンスへ直接出力するとJSONなどのレスポンス形式が壊れてしまうことがあります。

そのため、APIのデバッグではログを利用する方法が適しています。

JSON形式で変数の内容を確認する方法

配列などをJSON形式で確認したい場合は json_encode() を使用する方法もあります。

$user = [
    'name' => 'Taro',
    'age' => 30,
];

echo json_encode(
    $user,
    JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
);

JSON_PRETTY_PRINT を指定すると、JSONが見やすい形式に整形されます。

JSON_UNESCAPED_UNICODE を指定すると、日本語をUnicodeエスケープせずに表示できます。

ただし、json_encode() はデバッグ専用の関数ではありません。

また、PHPのデータ型やオブジェクト内部の情報を var_dump() と同じように確認できるわけではないため、用途に応じて使い分ける必要があります。

Laravelで変数をdumpする方法

LaravelなどのPHPフレームワークでは、PHP標準関数とは別に便利なデバッグ用機能が用意されています。

dump()を使用する

Laravelでは、環境や導入されているコンポーネントによって次のように dump() を利用できます。

dump($user);

変数を表示したあとも、その後の処理は継続します。

dd()を使用する

変数を表示したあとに処理を停止したい場合は、dd() がよく使用されます。

dd($user);

dd は一般に「dump and die」を意味します。

変数の内容を表示したあと、処理を終了します。

ただし、dump()dd() はPHP標準関数ではありません。

Laravelや関連するコンポーネントによって提供される機能である点に注意しましょう。

var_dump()・print_r()・var_export()の使い分け

PHPで変数をdumpする方法はいくつかありますが、目的によって適した関数が異なります。

データ型まで確認するならvar_dump()

var_dump($value);

値だけでなく型や構造まで詳しく確認したい場合に適しています。

PHPのデバッグでは、まず var_dump() を使うと分かりやすいでしょう。

配列を簡潔に確認するならprint_r()

print_r($array);

配列やオブジェクトの内容を、人間が読みやすい形式で確認したい場合に便利です。

PHPで解析可能な表現を確認するならvar_export()

var_export($value);

PHPで解析可能な文字列表現として値を確認したい場合に利用できます。

ログに記録するならerror_log()を組み合わせる

error_log(print_r($value, true));

ブラウザに直接デバッグ情報を表示したくない場合に便利です。

本番環境でdumpするときの注意点

変数のdumpは便利ですが、本番環境で安易に画面へ表示するのは避けるべきです。

dumpした変数には、次のような機密情報が含まれている可能性があります。

  • ユーザーの個人情報
  • メールアドレス
  • データベース関連情報
  • APIキー
  • アクセストークン
  • セッショントークン
  • Cookie
  • ファイルパス
  • SQL文
  • パスワードなどの認証情報

これらの情報がWebページ上に表示されると、情報漏えいやセキュリティ上の問題につながる可能性があります。

基本的には var_dump()print_r() による画面出力は開発環境で利用し、本番環境では適切なログ管理やエラー監視の仕組みを使用することが重要です。

PHPで変数をdumpする方法のまとめ

PHPで変数の内容をdumpするもっとも基本的な方法は var_dump() です。

var_dump() を使うと、変数の値だけでなくデータ型や配列・オブジェクトの構造まで確認できます。

例えば次のように使用します。

$value = '123';

var_dump($value);
string(3) "123"

配列を簡潔に確認したい場合は print_r()、PHPで解析可能な文字列表現を確認したい場合は var_export() が利用できます。

また、ブラウザに直接デバッグ情報を表示したくない場合は、error_log()print_r()var_export() を組み合わせる方法も便利です。

PHPでは、0'0'falsenull、空文字列など、見た目だけでは違いが分かりにくい値を扱うことがあります。

そのような場合でも var_dump() を使用すれば、データ型まで含めて確認できるため、バグの原因を特定しやすくなります。

一方、本番環境でのdumpには十分な注意が必要です。

認証情報や個人情報、システム内部の情報などが外部に露出する可能性があるため、デバッグ用の画面出力は開発環境に限定し、本番環境ではログや監視ツールを利用するのが適切です。

以上、PHPで変数の内容をdumpする方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次