ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

PHP - print_r()とvar_dump()について

print_r()var_dump()は、渡された内容を見やすい形式で出力する。文字列や数値の場合はecho, print()と同様に単純に文字列として出力する。

配列の場合は、以下のように出力する。

<?php

$a = array('name' => 'azunobu', 'age' => 20, 'location' => 'Iwate');
print_r($a);
var_dump($a);

出力

Array
(
    [name] => azunobu
    [age] => 20
    [location] => Iwate
)

array(3) {
  ["name"]=>
  string(7) "azunobu"
  ["age"]=>
  int(20)
  ["location"]=>
  string(5) "Iwate"
}

オブジェクトの場合は、以下のように出力する。

<?php
class Sample {
    var $name = 'azunobu';
}

$o = new Sample;
print_r($o);
var_dump($o);

出力

Sample Object
(
    [name] => azunobu
)

object(Sample)#1 (1) {
  ["name"]=>
  string(7) "azunobu"
}

print_r()とvar_dump()の違い

まず、print_r()論理値やNULLだとうまく表示してくれない。

print_r(true);    // "1"を出力
print_r(false);    // ""を出力
print_r(null);    // ""を出力

一方、var_dump()は、論理値やNULLであっても表示してくれる。

var_dump(true);    // "bool(true)"と出力
var_dump(false);    // "bool(false)"と出力
var_dump(null);    // "bool(null)"と出力

以上のことから、デバッグ時に使うとすれば、人間的に読みやすい形式で出力してくれるvar_dump()のが使い勝手が良さそう。

なお、出力された値をブラウザで確認する際は、ソースを見たほうが改行がうまく効いて見やすい。Chromeであればページの適当なところを右クリックし ページのソースを表示で表示できる。

参考

プログラミングPHP 第3版

プログラミングPHP 第3版