PHPの配列

前章でも少し紹介しましたが、本章ではPHPの配列について詳しく解説します。

(前章:PHP入門第3章『データ型』

配列はプログラミングの上で欠かせない型であり、使用頻度もとても高いです。

配列とは

配列は複数データのまとまりを保持します。今までは変数に単一のデータを代入する例ばかりを見てきましたが、配列は大量のデータを扱うのに向いています。
配列の実際の使用例を見てみましょう。次のファイルを作成してコードを書いて下さい。

<?php
  $data = ["りんご", "みかん", "ぶどう", "メロン"];
  print $data[0]. PHP_EOL;
  print $data[1]. PHP_EOL;
  print $data[2]. PHP_EOL;
  print $data[3]. PHP_EOL;

実行結果は

りんご
みかん
ぶどう
メロン

となりました。

このように1つの変数に複数の値をまとめて入れておくことができるのが、配列の特徴です。

$変数名 = ["要素1", "要素2", "要素3", ...];

配列の中の各値は 要素 という言葉で表されることがあります。
ところで、この$data変数に代入された各要素を出力するのに、次のように書きました。

print $data[0]. PHP_EOL;
print $data[1]. PHP_EOL;
print $data[2]. PHP_EOL;
print $data[3]. PHP_EOL;

なんとなく「配列の中身を順番に出力しているのだな」ということはわかるかと思います。ただ、その番号のつけ方に違和感を感じるのではないでしょうか。
配列の1番目の要素は「りんご」ですが、その値を取り出すのに print $data[0] 「0」の番号を使っています。

[]の中の番号のことを添字といいます。そして配列の添字はこのように「0から始まる」ということを抑えておいて下さい。なぜそうなるのか、理由を深堀りすることはここではしません。そういうものなんだと覚えてしまって下さい。これはPHPに限らず、他の多くのプログラミング言語でも同様です。

ちなみに「0」からはじまる添字が自動的に割り振られる配列のことを添字配列といいます。また、添字のことをキーとかインデックスとも呼びます。

配列が威力を発揮するのは、for文foreach文などの繰返し処理で使われる時です。繰返し処理は後の章で詳しく述べますが、まずは一例として次のコードを試してみましょう。array.phpを次のように変更してみてください。

<?php
  $data = ["りんご", "みかん", "ぶどう", "メロン"];
  foreach ($data as $key => $value) {
    print $value . PHP_EOL;
  }

実行結果は同じになります。

りんご
みかん
ぶどう
メロン

foreach文で$data配列のデータ件数の分だけ繰り返し処理を行い、配列に格納されたデータを1件づつ出力しています。

foreach (配列データ as キーの変数 => 値の変数) {
  // データ1件づつ処理をする
}

配列はこのように繰返し処理と大変相性が良いです。先回りしてforeach文についても少しご紹介てしまいましたが、繰返し処理の詳しい内容は後の章で扱います。

配列の中身を調べる方法として、print_r()関数も紹介しておきます。
今まで使ってきた print 文だと配列の中身を見ることができませんが、print_r()関数を使えば丸わかりになります。

先程のarray.phpを print_r()関数を使って次のように変更してみましょう。

<?php
  $data = ["りんご", "みかん", "ぶどう", "メロン"];
  print_r($data);

実行結果

Array
(
    [0] => りんご
    [1] => みかん
    [2] => ぶどう
    [3] => メロン
)

まず最初に array と出力してくれます。これはデータの型を教えてくれているものです。その後、()内に「キー => 値」の形で配列の中身を出力してくれています。これは見やすくて便利ですね。
print_r()関数は、プログラムを書いている途中に「あれ、この変数の中身ってどんなものがはいっているんだっけ?」という時に中身を調べるのに重宝します。print文と併せてデバッグ目的で使うことが多いので、ぜひ覚えておいて下さい。

ところで、print_r()による出力結果にでてくる => この記号は何でしょうか?実はforeach文の例のところにも登場しているのですが、この記号は配列にとって欠かせない存在です。

これはダブルアロー演算子といって、配列を構成するのに使用される演算子です。
キー => 値」 これが配列の基本形と思って下さい。
array.phpの例では、たまたまキーを省略した形の配列を作成しました。その結果、自動的に0から順番にキーが割り振られたのです。

連想配列とは

連想配列とは、値に任意のキーをつけた配列です。ハッシュとも呼ばれます。
実例を見てみましょう。hash.phpファイルを新規作成して、次のコードを書いて下さい。

<?php
  $data = [
    'apple' => 'りんご',
    'orange' => 'みかん',
    'grape' => 'ぶどう',
    'melon' => 'メロン',
  ];
  print $data['apple'] . PHP_EOL;
  print $data['grape'] . PHP_EOL;

実行結果

りんご
ぶどう

このように、データに任意の名前(キー)をつけることができるのが連想配列です。
データには名前をつけるのがプログラミングの基本です。変数に値を代入するのも、ある意味「データに名前をつけたもの」と言えますよね。

PHPの配列は柔軟です。要素を追加・削除したり、中身を入れ替えることもできます。異なる型を混在させることもできます。

さらには、配列の中にまた配列を格納することもできてしまいます。

多次元配列とは

配列の中の要素が更に配列になっているものを多次元配列と呼びます。
次のファイルを作成してください。

<?php
  $yamada = ['name' => '山田太郎', 'age' => 23, 'score' => 65];
  $suzuki = ['name' => '鈴木花子', 'age' => 21, 'score' => 82];
  $satou = ['name' => '佐藤健二', 'age' => 22, 'score' => 78];

  $members = [$yamada, $suzuki, $satou];

  print_r($members);

実行結果

Array
(
    [0] => Array
        (
            [name] => 山田太郎
            [age] => 23
            [score] => 65
        )

    [1] => Array
        (
            [name] => 鈴木花子
            [age] => 21
            [score] => 82
        )

    [2] => Array
        (
            [name] => 佐藤健二
            [age] => 22
            [score] => 78
        )
)

配列が入れ子になっているのがわかりますね。多重構造になっているのが多次元配列の特徴です。尚、入れ子は何階層になっても構いません。

まとめ

以上、配列について学んできました。

  • 配列・・・復数データのまとまり。 0 から順番にキーが割り当てられる。添字配列とも言う。
  • 連想配列・・・配列のキーに任意の名前をつけられる
  • 多次元配列・・・配列の中のデータが更に配列になっている

このように覚えておきましょう。


前章:PHP入門第3章『データ型』
次章: