Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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' => 'user@example.com'
];
var_dump($hash);

出力

array(2) {                                                                                       
  'user' =>                                                                                      
  string(3) "あ"                                                                                  
  'email' =>                                                                                     
  string(16) "user@example.com"                                                                  
}

配列と同じように、array と表示され、array型 であることがわかる。
たとえば、user@example.com を出力したいとき、

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 の場合、-> を使ってアクセスしなければならない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away