連載
» 2017年05月29日 05時00分 UPDATE

Web業界で働くためのPHP入門(5):PHPの配列変数、array、キー、多次元配列&var_dump (1/2)

オープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載。今回は、PHPにおける「配列変数」、array、キーのさまざまな使い方に加え、多次元配列や変数の詳細を表示させるvar_dump()関数について解説します【PHP 7.1含め2017年の情報に合うように更新】。

[山口晴広, 齊藤新三(改訂)/山田祥寛(改訂監修),WINGSプロジェクト]

 オープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載「Web業界で働くためのPHP入門」。今回は「配列変数」について解説します。

PHPにおける「配列変数」とは何か

 配列変数とは、複数の値をひとまとめにした変数です。複数個の変数を使う方法だと実現しにくかったり、表現できなかったりするものを変数に格納できるようになります。

 例えば、時系列のデータを格納することを考えてみます。配列を使わずに普通の変数に格納するとなると、次のようになります。

// 日本のGDP
$jpGdp2014 = 5136980;
$jpGdp2015 = 5304657;
$jpGdp2016 = 5372894;

 このような書き方でもやりたいことは実現できなくはないですが、スマートに書けない場面も多々出てくるでしょう。また、西暦年が増えるたびにプログラムを書き直さなければならなくなります。

 配列を使えば、こういった複数のデータを1つの変数で取り扱えるようになります。

PHPにおける配列

 まず、PHPで配列を使ったサンプルソースコードを見ていきましょう。

<?php
$jpGdps[2014] = 5136980;  // 【1】
$jpGdps[2015] = 5304657;  // 【1】
$jpGdps[2016] = 5372894;  // 【1】
 
$year = 2016;
print($year."年の日本の名目GDPは".$jpGdps[$year]."億円です。");  // 【2】
リスト1 phplesson/chap05/useArray.php

 実行結果は以下の通りです。

2016年の日本の名目GDPは5372894億円です。

 複数の値を1つにまとめるわけですから、それぞれの値を識別するための方法が必要になります。それには角かっこ([])と、識別のための整数、または文字列を用います。先の例で使った日本のGDPを配列を使って書き換えたのがリスト1の【1】です。ここでは、「$jpGdps」が配列変数であり、3個の要素を持つことになります。

注意! 文字列の結合

 PHPで文字列を結合するには、文字列と文字列の間に「.」を使います。リスト1の【2】のprint()で表示する文字列は、下記の4個の文字列を結合しています。

$year
"年の日本の名目GDPは"
$jpGdps[$year]
"億円です。"

 連載第3回「PHPの変数と代入、リテラルとエスケープシーケンス」の「ダブルクオートとシングルクオートの違い」で説明したように、ダブルクオートでは変数が展開されるので、リスト1の【2】は文字列結合を使用せずに下記のように記述しても構いません。

print("{$year}年の日本の名目GDPは{$jpGdps[$year]}億円です。");

配列変数は「配列型」の変数

 変数には型がありますが(連載第3回参照)、この変数は「配列型」となります。配列のそれぞれの要素については、整数を格納しているので「整数型」です。

配列の要素を識別するために指定する値「キー」

 角かっこ内で、要素を識別するために指定する値のことを「キー」と呼びます。リスト1では「2016」などの整数のことです。

PHPは「連想配列」に「配列」の概念が含まれている

 PHPの配列では任意の整数や文字列をキーとして利用できますが、一般的には0や1から始まる連続した整数を使うものを「配列」、文字列や任意の数値を使うものは「連想配列」「マップ」「ディクショナリ」「ハッシュ」などと呼び、それぞれ別の物です。

 つまり、一般的にいえばPHPのこれは「連想配列」ということになるわけです。PHPは、連想配列に配列の概念が含まれているといえます。

 なお、キーに0からの連続した整数を使えば、PHPでも一般的にいう「配列」と同じように使えます。

配列変数へのアクセス

 配列変数へのアクセスは、代入のときと同様に角かっこを使います。リスト1の【2】の「$jpGdps[$year]」がそれに当たります。また、この例のように、角かっこ内に変数を使うこともできます。こうすることで、リスト1のprint()文はどの西暦年であってもコードを変えずに済むわけです。配列にせず、別々の変数のままではこうはいきません。

キーに文字列を使う例

 先述のように、キーには数値以外に文字列も使えます。まず、サンプルの作成から行いましょう。

<?php
$colorMagenta["red"] = 255;  // 【1】
$colorMagenta["green"] = 0;  // 【1】
$colorMagenta["blue"] = 255;  //【1】
    
print("<pre>");  //【2】
var_dump($colorMagenta);  //【3】
print("</pre>");  //【2】
リスト2 phplesson/chap05/useDump.php

 実行結果は以下の通りです。

array(3) {
  ["red"]=>
  int(255)
  ["green"]=>
  int(0)
  ["blue"]=>
  int(255)
}

 ここでは、配列のキーに文字列を使っています。それが【1】です。この通り、角かっこ内を文字列にするだけです。

 この配列は、マゼンタ色の色情報を格納しています。色は赤、緑、青の3原色で表しますので、数値の変数1つでは表すことができません。そこで配列を使って表現しています。

var_dump()関数で変数の詳細を表示

 ここで、「var_dump()」という関数を紹介します。PHPでは基本的な制御構文の他に、関数という単機能な道具をたくさん持っています(関数の詳細に関しては、いずれ説明します)。

 var_dump()は、変数の詳細な内容を表示する関数です。特に配列の内容を確認する場合には便利なものです。基本的な使い方はリスト2の【3】のようになります。

 実行結果に注目してください。表示の読み方ですが、1行目の「array」は配列型を示しており、続くかっこの中は要素数になっています。波かっこの中に要素が表示されていて、キーと対応する値の間は「=>」という記号で連結しています。丸かっこの中身が格納されている数値で、その前にある「int」は型の名前を表しており、intは整数型です。

 型の名前は、配列に格納されているデータ型で以下のように変わります。

表1 型と表記
型名 内容
int 整数型 int(35)
float 小数型 float(5495.384)
string 文字列型 string(13) "Hello, World!"
bool 真偽値 bool(true)

 なお、stringだけ()内の数値の意味が変わり、これは文字列の桁数(バイト数)を表します。実際に格納された文字列はその後に表示されています。

 ところで、リスト2の【2】の<pre>タグに関して少し補足しておきましょう。var_dump()は、実行結果のように改行されて見やすく表示してくれます。しかし、この改行はHTML上では無視されてしまいます(HTML上での改行は<br>タグです)。この改行を無視しないようにするために<pre>タグで囲むようにしているのです。

 もし、リスト2の【2】のソースコードがない場合は、実行結果は以下のように1行で表示されてしまいます。

array(3) { ["red"]=> int(255) ["green"]=> int(0) ["blue"]=> int(255) }

コラム「var_dump()以外の変数確認方法」

 PHPでは、var_dump()の他にも、似たような機能を持つ関数があります。

表2 PHPにおける変数確認方法
関数 機能
var_dump() 変数の値とその型も表示
print_r() 変数の値のみ表示
var_export() PHPのコードとして値を表示

 型まで表示するのはvar_dump()だけです。また、print_r()やvar_export()は次のようにすると、結果を変数に格納できます。

$result = print_r($colorMagenta, true);
$result = var_export($colorMagenta, true);

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。