今回は、PHPにおけるvar_dump()を使ったデバッグ方法について紹介したいと思います!
このブログArrownは、この記事を書いている2021年10月時点ではWordPressで作成されています。WordPressはPHPという言語でできているのですが、エラーやトラブルが起きたときに原因を突き止めるために必要になってくるのが「デバッグ」という作業です。
デバッグとは、プログラムの欠陥やミスを明らかにして、正常通りにプログラムが動作するようになるための作業のことを指しますが、デバッグで大事になってくるのが
- プログラムが何をやっているのか
- プログラム内の各データがどのようになっているのか
を可視化することだと思います。
そこで今回は、PHPにおけるデバッグの基本中の基本であるvar_dump();について、使い方・var_dump()によって表示される内容の読み解き方をみて行きたいと思います!
目次
PHPのvar_dump()とは??
PHPのvar_dump()とは、()の中に指定したものをブラウザ画面上に出力してくれる命令・関数です。
具体的な事例を見てみましょう!
<?php
$name = "kosuge";
var_dump($name);
PHPファイルに上記のように書くと、ブラウザ画面には以下のように出力されます。
string(6) "kosuge"
他の事例も見てみましょう!
<?php
$day = 4000;
var_dump($day);
上記のようにPHPファイルに記述をすると、ブラウザ画面には以下のように出力されます。
int(4000)
このように、PHPのvar_dump()関数を使うと、()の中に指定されたものが画面に出力されるということがわかりました!
()の中には、PHPの変数($が冒頭についているもの)などが指定されることがほとんどです。
var_dump()を使った具体的な事例を通じて出力結果の読み解き方を知ろう!
ただ、先ほど掲載した事例はシンプルすぎてvar_dump()を使う意義が実感できないのではないかと思います。。。
もう少し複雑なデータを表示する際の事例を見ていきましょう!
Instagram Graph APIの基本的な使い方・Webサイトにインスタの写真を埋め込みする方法という記事で使用しているPHPのコードを例にして、var_dump()の実用的な使い方を見てみたいと思います!
詳しいPHPのコードはInstagram Graph APIの基本的な使い方・Webサイトにインスタの写真を埋め込みする方法を見ていただきたいのですが、この記事で紹介しているPHPコードは、要するにInstagramに対して「こんな感じのデータがほしいです!」というお願い(リクエスト)をし、お願いした内容に問題がなければInstagramからデータを受け取るという内容になっています!
最終的には、以下のコードの部分にInstagramからとってきたデータが集約されています。
echo $instagram_data;
この「$instagram_data」をvar_dump()を使って表示してみたいと思います!
echo '<pre>';
echo $instagram_data;
echo '</pre>';
上記のようなコードをPHPファイルに記述し、PHPファイルを表示してみたいと思います!(PHPが動く環境であること前提)
上記画像のように表示されます!このコードの意味を読み解けるようになって初めてvar_dump()を使いこなせるようになります!
array(2)
とか、["media_url"]
のような記述が多々見受けられると思うのですが、これはいったいどういう意味なのでしょうか??
arrayとは??
まずは、array()。array()はプログラムの「配列」を表します。配列とは、「特定の基準を目安にしたときに1つの仲間と判断できる」複数のデータがひとまとまりになったデータのことを指します。
array(2)と書かれていたら、「このデータの中身はまず大きな区分として2つにデータが分類されている」という意味を表しています!ネットショッピングで注文した荷物が自宅に届いた時に、箱を開けてみたら商品の中身がさらに2つの細かい箱に分かれているようなイメージです!w
例えばみなさんがネットショッピング・通販で美味しいジュースセット(3本入りのビン)を頼んだとしましょう。
3本入りのビンなのに1本1本別々に分かれて自宅に届いたら、面倒ですよね。。。普通「3本入りのビン」であれば、3本のジュースビンが1つの箱にまとまった状態で自宅に届くと思います!
プログラムの配列もこの例えと同じです!
「●●さんのInstagramデータ」といっても、何個も何個も投稿していれば、たくさんの投稿データが溜まりますし、1つの投稿データの中にも「投稿文章・画像・コメント情報・投稿日」などさまざまな情報が存在しています。
しかし、元を辿れば「●●さんのInstagramデータ」という仲間として考えることができるので、同じ仲間であればできるだけまとめよう!ということで生まれたのが配列だとお考えください!
[“●●”]・・・配列のkeyとは??
では、["media_url"]
のような記述はどういう意味なのでしょうか??
["media_url"]
のような記述は、配列の中の各データをさらに細かく分類して、それぞれのデータが何を表しているのかを示してくれるものになります!
["media_url"]
であれば、「Instagramの投稿画像のデータのURL」になるわけですね!
["media_url"]=>●●
と書かれていたら、「投稿画像のデータは●●です」という意味になります!
ちなみに、=>の先にintやstringと書かれていることがありますが、これは「そのデータが数字なのか文字なのか(はたまた別の種類のデータなのか)」を示すものになります!
["media_url"]
のようなものを配列のkeyと呼ぶことがあります!keyはただの数字が書かれていることもありますが、そういった場合は「複数あるデータのうちの何番目の情報」であることを指し示しています。
配列のkeyを使うと、複数の情報がまとまったデータの中から、特定の情報を表示させることも簡単になります!
例えば、「●●さんのInstagram投稿の中から1番最新の投稿の画像URL」を指定したい場合は、
$instagram["business_discovery"]["media"]["data"][0]["media_url"]
といったように、配列のkeyを数珠繋ぎにすることで、目的のデータを指定することができるようになります!
var_dump()を使うと、目的のデータがどこにあって、どのように配列のkeyを数珠繋ぎをすれば目的のデータに辿り着けるのが見やすい状態になりますよね!
まとめ
ということで、今回はPHPのvar_dump()についてブログにしてみました!
改めてまとめると、大事なのは以下のことです!
- PHPのvar_dump()はプログラムのさまざまな情報を可視化してくれるもの。
- 配列は、特定の仲間と判断された複数のデータがひとまとまりになったもの
- 配列の中から特定の情報を取り出したいときは、var_dump()で構造を確認し、配列のkey([“media_url”]みたいなやつ)を数珠繋ぎで繋げる。
var_dump()は基本的なPHPのデバッグ方法ですが、困ったときに使いこなせるようになると、よく知らないコードも何となく読み解けるようになってきます!
ぜひ、使いこなしていきましょう!