多次元配列(たじげんはいれつ)
配列の知識がついたついでに、多次元配列も片付けてしまいましょう。
多次元配列の中でも「2次元配列」は、よく使われます。
プログラム関係の試験なんかでも「2次元配列」をよく見かけますね。
目次
1. 多次元配列
多次元配列は、簡単にいうと「配列の配列」です。
配列の要素が配列ということです。
「配列の配列」は、「2次元配列」です。
「配列の配列の配列」は、「3次元配列」。
「配列の配列の配列の配列」は、「4次元配列」などなど何次元配列でも作ることができます。
なんだか、ややこしいですよね。
多次元配列の中でも、「2次元配列」はよく使われますので、ここで使い方を見てみましょう。
1-1. 2次元配列
下は、2次元配列を作ってみました。
//2次元配列
let x=[[1,2,3],[4,5,6],[7,8,9]]
print_r(x)
print_rで2次元配列の中を確認してみると、下のようになっています。
[0] => Array (
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array (
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array (
[0] => 7
[1] => 8
[2] => 9
)
)
インデックスが「2段」になっているのがわかるでしょうか?
インデックスが「2段」になっているので「2次元」というわけです。
0 1 2
0 2 3
1 0 4
1 1 5
1 2 6
2 0 7
2 1 8
2 2 9
1-2. 2次元配列からの要素の取り出し
この2次元配列から目当ての値(要素)を取り出すには、インデックスを2つ指定します。
例えば、「7」を取り出すには、「x[2][0]」というように1次元目と2次元目のインデックスを指定します。
//2次元配列
let x=[[1,2,3],[4,5,6],[7,8,9]]
// 「9」の取り出し
print( x[2][2] )
では、2次元配列に対して「x[2]」のように、1次元目のインデックスのみ指定した場合、何が取得されるのでしょうか?
//2次元配列
let x=[[1,2,3],[4,5,6],[7,8,9]];
// 1次元目のインデックスのみ指定した
print_r( x[2] );
[0] => 7
[1] => 8
[2] => 9
)
1次元目のインデックス「2」の要素である「配列そのもの(7,8,9を要素としてもつ配列)」が取り出せました。
「x[2][0]」を指定するということは、まず1次元目「x[2]」の要素である「配列そのもの(7,8,9を要素としてもつ配列)」を取り出し、続けてその配列のインデックス「0」の要素を取り出しているということです。
下は「x[2][0]」を指定したときのイメージです。
まずは、2次元配列に対して1次元目のインデックスを指定します。
// 2次元配列
let x=[[1,2,3],[4,5,6],[7,8,9]];
// 1次元目のインデックス指定[2]
x[2]
上の「x[2]」によって2次元配列が下の1次元配列に絞り込まれます。
x[2]の姿はこれ
続けて、上の配列に対して2次元目のインデックスを指定します。
// 2次元目のインデックス指定[0]
x[2][0]
とすることで、
最初にx[2]で絞り込まれた配列[7,8,9]に対してx[0]を指定するので「7」が取得されるというわけです。
「x[1][1]」とした場合は、「5」が取り出せるということになります。
要するに、n次元配列には、n個のインデックスがあるということです。
上で見てきたように、2次元配列なら2つのインデックスを指定して要素を取り出しています。
3次元配列なら3つのインデックスを指定して要素を取り出すということになります。
1-3. 2次元以上の多次元配列
3次元配列であれば、インデックスが1つ増えて、「x[1][1][1]」、4次元配列ならインデックスがさらに1つ増えて「x[1][2][3][4]」といった感じで使います。
10次元とかになるもう訳が分からなくなりますね。
3次元以上の配列であったとしてもインデックスが増えるだけで、その取り扱いは、上で見た2次元配列と変わりません。
実際には、3次元以上の配列を取り扱うことは、あまりありません。
配列は、1次元配列はもちろんの事、2次元配列まで取り扱えれば、大抵のことができるようになります。
2. 試してみよう
次の2次元配列の中から次に指定した果物を表示してください。
let kudamono=[["りんご","いちご","みかん"],["メロン","ぶどう","もも"],["キウイ","さくらんぼ","パイナップル"]]
いちご
メロン
パイナップル
2-1. 答え例
いちご
print( kudamono[0][1] )
メロン
print( kudamono[1][0] )
パイナップル
print( kudamono[2][2] )
3. まとめ
2次元配列を作成して、その要素を取り出しました。
2次元配列は、配列の配列です。
2次元配列から要素を取り出すには、インデックスを2つ使います。
n次元配列には、n個のインデックスがあります。
次は、「ブロック」についてです。