var_dump() 指南 (初学者・初心者用)


PHPでソースコードを書いていて、最も利用する関数だ。一方、この関数が書かれたまま、製品となることもない。開発期間中最もタイピングされては、消される関数…。これを使いこなさないで開発している方は、かなりの時間を無駄にしていることかと思われます。

文字列

<?php

// 文字列型
$str = 'ここはテキストです。';
var_dump($str);

出力

string(30) "ここはテキストです。"

最初に出力されている string が「型」(30) というのはバイト単位での、長さ。そのあとに、$str に代入されている値が表示されます。

整数型

<?php

// 整数型
$int = 1000;
var_dump($int);

出力

int(1000)

文字列と同様に、最初の出力は int と表示され、int型 であることがわかります。 int の場合、() の中に$int に代入された値が表示されます。

小数点を含む数値

<?php

// 小数点を含む数値
$number = 1.234;
var_dump($number);

出力

double(1.234)

整数と同様に出力されます。型はdoubleとなる。

"で囲まれた数値

<?php

$number = '1.234';
var_dump($number);

出力

string(5) "1.234"

" で囲まれたものは文字列となる。

NULL

<?php

// NULL
$null = null;
var_dump($null);

出力

NULL

NULL とだけ表示される。

空文字列

<?php

// 空文字列
$empty = '';
var_dump($empty);

出力

string(0) ""

string型 であることが表示され、"" と表示される。

配列

<?php

// 配列
$array = [
    'あ', 'い', 'う', 'え', 'お'
];
var_dump($array);

出力

array(5) {                                                                                       
  [0] =>                                                                                         
  string(3) "あ"                                                                                  
  [1] =>                                                                                         
  string(3) "い"                                                                                  
  [2] =>                                                                                         
  string(3) "う"                                                                                  
  [3] =>                                                                                         
  string(3) "え"                                                                                  
  [4] =>                                                                                         
  string(3) "お"                                                                                  
} 

一番最初に array と表示され、配列 であることがわかるように表示される。array(5) とカッコの中の数字は、配列が持つデータの数を表している。 [] の中に表示された数字は index で 0 からの通し番号。

たとえば、「う」という文字列(「う」の直前には string と表示されている)を出力したいとき、

echo $array[2];

と記述すれば、出力される。

連想配列

<?php

// 連想配列
$hash = [
    'user' => 'あ', 'email' => '[email protected]'
];
var_dump($hash);

出力

array(2) {                                                                                       
  'user' =>                                                                                      
  string(3) "あ"                                                                                  
  'email' =>                                                                                     
  string(16) "[email protected]"                                                                  
}

配列と同じように、array と表示され、array型 であることがわかる。
たとえば、[email protected] を出力したいとき、

echo $arr['email'];

と記述すれば良い。[] の中に記述する email についても、var_dump() の結果を見ればわかる。=> を挟んだ位置関係に注目すれば、配列 と同様です。

多重配列

<?php

// 多重配列
$multipleArray = [
    [1, 2, 3, 4]
    , ['あ', 'い', 'う', 'え']
    , ['a', 'b', 'c', 'd']
];
var_dump($multipleArray);

出力

array(3) {
  [0] =>
  array(4) {
    [0] =>
    int(1)
    [1] =>
    int(2)
    [2] =>
    int(3)
    [3] =>
    int(4)
  }
  [1] =>
  array(4) {
    [0] =>
    string(3) "あ"
    [1] =>
    string(3) "い"
    [2] =>
    string(3) "う"
    [3] =>
    string(3) "え"
  }
  [2] =>
  array(4) {
    [0] =>
    string(1) "a"
    [1] =>
    string(1) "b"
    [2] =>
    string(1) "c"
    [3] =>
    string(1) "d"
  }
}

複雑に見えるが、単なる組み合わせに過ぎない。=> の左側に注目すれば、データへのアクセスも簡単だ。
たとえば、「b」を出力したいとき、=> の左側に書かれているものを辿ればいいだけだ。
[1] → [2] → array これを逆にすればいい。

echo $multipleArray[2][1];

クラス・オブジェクト

<?php

// クラス・オブジェクト
class Clazz
{

    private $private = 'プライベート・プロパティ';
    protected $protected = 'プロテクテッド・プロパティ';
    public $public = 'パブリック・プロパティ';

}

$clazz = new Clazz();
var_dump($clazz);

出力

class Clazz#1 (3) {
  private $private =>
  string(36) "プライベート・プロパティ"
  protected $protected =>
  string(39) "プロテクテッド・プロパティ"
  public $public =>
  string(33) "パブリック・プロパティ"
}

var_dump($clazz) つまり $clazzClazz と言う名前の class だと表示される。
配列の時と出力形式は似ているが、$clazz['private'] のように書いてもデータにはアクセスできない。なおかつ、アクセスできるのは、public と表示されているものに限られる。

データにアクセスするには、

echo $clazz->public;

と記述する。classobject の場合、-> を使ってアクセスしなければならない。