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

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

##文字列

```php
<?php

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

###出力

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

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


##整数型

```
<?php

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

###出力

```bash
int(1000)
```

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


##小数点を含む数値

```php
<?php

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

###出力

```bash
double(1.234)
```

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

##`"`で囲まれた数値

```php
<?php

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

###出力

```bash
string(5) "1.234"
```

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

##NULL

```php
<?php

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

###出力

```bash
NULL
```

`NULL` とだけ表示される。


##空文字列

```php
<?php

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

###出力

```bash
string(0) ""
```

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

##配列

```php
<?php

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

###出力

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

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

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

```php
echo $array[2];
```

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


##連想配列

```php
<?php

// 連想配列
$hash = [
	'user' => 'あ', 'email' => 'user@example.com'
];
var_dump($hash);
```

###出力

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

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

```php
echo $arr['email'];
```

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


##多重配列

```php
<?php

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

###出力

```bash
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 これを逆にすればいい。

```php
echo $multipleArray[2][1];
```

##クラス・オブジェクト

```php
<?php

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

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

}

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

###出力

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

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

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

```php
echo $clazz->public;
```

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