第5章 配列を詳しく知って扱おう

5.1 多くのデータを入れる配列構造

配列は大量のデータをひとまとめに扱うための仕組みです。通常の配列は、配列の要素が一方向に伸びて1列に繋がっていました。このような配列を一次元配列といいます。さらに、配列の各要素から要素が伸びる二次元配列や、三次元の方向にも要素を持つ三次元配列、あるいはそれ以上の配列も作ることが可能です。
二次元配列が縦横に伸びる平面図形とすると、、三次元配列は高さを持つ立方体のようなイメージで表すことがあります。このように二次元、三次元・・・のような配列を「多次元配列」と呼びます。


図 5.1.1: 二次元と三次元方向

5.1.1 多次元配列は配列データの集まり

次元の話から多次元配列をイメージすると難しく感じるかもしれませんが、簡単に言ってしまうと配列の要素の中に配列が入っているようなものが多次元配列になります。


図 5.1.2: 多次元配列は配列の要素に配列が入っている

多次元配列の三次元以上はそれほど使用する機会が少ないため、本テキストの次項では二次元配列をメインに学習して行きます。

5.1.2 多次元配列を使ってみよう

多次元配列を作る方法はとても簡単で、通常の配列の作成方法に少し追加すれば簡単に行えます。

書式:多次元配列を作る

通常の配列が配列名の後ろに[]を1つ付けていましたが、多次元配列はさらに[]を付けて行くことで作成できます。設定するキーは通常配列と同じように数値キー、文字列キー(連想配列)が設定でき、省略することも可能になっています。array関数を利用しても多次元配列を作成することができます。

凡例:二次元配列を作る

凡例のソースコードをprint_r関数を利用して情報を表示すると、代入とarray関数の2つの方法は同じ結果になることが確認できます。図5.1.3ではprint_rを使いましたが、多次元配列の各要素の参照方法は通常の配列と同じで、キー値を[]内に指定すれば値を参照することができます。echo $array1[0][0];→「0-0」が表示される。


図 5.1.3: 代入とarray関数を利用して作成した二次元配列の結果は同じ

二次元配列と二重ループを利用した九九表示プログラム

二重ループを利用して二次元配列に九九の結果を代入し、さらに格納したデータをWeb画面にを表示して確認します。

ソース・フォルダー: myproj_basic/ch05
パッケージ: kuku.php
アクセスURL:http://localhost/myproj_basic/ch05/kuku.php

kaku.php

実行結果

解説

2~6行目で、for文の二重ループのカウンタ変数の値を掛け算した九九データを、二次元配列の各要素に代入します。内部も外側も9回ループするように指定しています。この2つのループは初期化の式を「0」からではなく「1」から始めています。その理由として、カウンタ変数の数値をそのまま掛け算に利用するためです。

4行目の処理で、外側のforループのカウンタ変数$iの値と、内側のforループのカウンタ変数$jの値を、代入する値の計算と二次元配列のキー値に利用しています。また、配列の要素は「0」から利用できますが、PHPでは任意の要素から自由に配列要素を利用することもできます。そのためカウンタ変数と合わせて、九九の各結果を二次元配列の各要素を「1」から格納しています。
下記の表のように、配列変数$kukuの各要素に対する全ての計算と、その結果の値の代入を二重ループで行っています。

上記の表と合わせて以下の図5.1.4のイメージで考えると分かりやすくなりますので参考にしてみてください。


図 5.1.4: 二次元配列に九九のデータを格納

13~21行目が九九データを表示する処理になっています。<pre>タグを利用するとこのタグ内の文字コードをその意味のまま表示させることができます。\t(タブ)は表示する数値の間に挟むことで、等間隔にスペースを空けることができます。
14行目で外側のループを1から開始して9回繰り返し、15行目で段の表示を行います。そして、16行目で内側のループでさらに1から開始して9回繰り返し、二次元配列のデータを画面に表示しています。このときに2つのカウンタ変数$iと$jを利用することで二次元配列のデータを順番に参照できます。外側のループ処理の最後に19行目で次の段表示のために、改行を挿入しています。これを9の段まで繰り返すことで、九九データ全てを画面に表示することができます。

NEXT>> 5.2 配列と連携できる組み込み関数