皆さんは、PHP開発をするうえで「あの関数、中身どうなってるんだ?」と疑問を呈した事は無いでしょうか?
いちいち中身を確認する為に、実行して結果が思ったものと違って、かといって原因はわからない…
そんな経験もあるものかと思います。
そんな状態を解決してくれるのが、この[var_dump]です。これは、いわゆるデバッグに使う関数で、使うとその便利さに驚くはずです。
ここでは便利なvar_dump関数について、使い方&仕様を解説します!
var_dump()の動きを解説
まず下記のテストコードを打ち込みます。
<?php
$a = 1;
$b = "test";
$c = "";
$d = 1.234567890;
$e = ["apple" => 3,"banana" => "sweet","orange" => 7];
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
すると出力は以下の通りになります。
//$a
int(1)
//$b
string(4) "test"
//$c
string(0) ""
//$d
float(1.23456789)
//$e
array(3) {
["apple"]=>
int(3)
["banana"]=>
string(5) "sweet"
["orange"]=>
int(7)
}
どうでしょう?
var_dump関数を用いる事で、変数の中身がただ出力されるのみならず、なんと内部でのプリミティブ型(0か1の型を示すbool値とか、文字列のstring値のような「変数の種類」を示すもの)付きで、さらに変数の中身が表示されるようになります。
int型/float型の場合は、()の中に変数の中身が入ります。
string型の場合、()の中身は"半角/全角スペースを含めた文字列の文字数"が表示され、更にその後に変数の中身が表示されます。
array型の場合、()の中身は何とarrayの中身の数と、中のプリミティブ型とその具体的な仕様まで詳しく出てきます。
おまけ:デバッグ向け関数には、print_r()という関数もある。
var_dump関数はデバッグで有用という事をお伝えしましたが、実は似たような用途の関数に。"print_r"関数というものもあります。
こちらは、いうなればvar_dump関数の簡易版ともいえる仕様です。
プリミティブ型は表示させず、そのまま関数の中身を表示してくれるという仕様です。
試しに、上記のテストコードで書いたvar_dump()の部分を、全てprint_r()に書き換えてみましょう。
出力は以下の通りです。
123test1.23456789Array
(
[apple] => 3
[banana] => sweet
[orange] => 7
)
簡易的ですね。情報量が少なくなっており、更にソースコード自体に工夫をせねば改行もありません。
var_dumpするまでも無いと思えるデバッグをするのなら、使ってみてもいいかもしれません。