多次元配列

広告

要素の値にはどのような値でも格納することができます。その為、数値や文字列などに加えて他の配列を格納することも可能です。例えば次の例を見て下さい。

$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type = array('Note', 'Desktop');

$pc = array($maker, $type);

上記では配列「maker」と配列「type」をそれぞれ作成したあとで、この2つの配列をそれぞれ値とした要素を持つ配列「pc」を作成しています。配列の要素として他の配列が含まれている場合を2次元配列といいます。要素の値として格納した配列の要素にも他の配列を格納できますので何次元の配列でも作成は可能です。

今回はarrayを使用しましたが次のように記述しても同じです。

$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type = array('Note', 'Desktop');

$pc[0] = $maker;
$pc[1] = $type;

次に値を取得してみます。キーを指定して要素を取得した場合には要素に含まれる配列を取得します。値として含まれる配列の中のさらに要素を指定するには次のように記述して下さい。

$変数1 = $配列変数名[キー];
$変数2 = $変数1[値として格納された配列のキー];

まずは配列に値として格納されている配列を変数に格納します。そして取得した配列に対してキーを指定して値を取り出しています。この記述方法でも間違いではありませんが、通常は次のようにまとめて記述します。

$変数 = $配列変数名[キー][値として格納された配列のキー];

具体的には次のように記述します。

$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type = array('Note', 'Desktop');

$pc = array($maker, $type);

print $pc[0][1];    // NEC と出力
print $pc[1][0];    // Note と出力

今回は2次元配列の場合でしたが何次元であっても考えかたは同じです。

なお配列Aを他の配列Bの値として格納した場合、配列Aが持つ要素がコピーされて配列Bの値として格納されます。その為、後から元になった配列Aを変更したとしても配列Bの要素には影響しません。

サンプルプログラム

では簡単なプログラムで試して見ます。

sample6-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<pre>
<?php
$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type = array('Note', 'Desktop');
$pc = array($maker, $type);

print_r($pc);

print '$pc[0][1] = '.$pc[0][1].'<br />';
print '$pc[1][0] = '.$pc[1][0];
?>
</pre>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

多次元配列

PHP入門の他の記事を見てみる

( Written by Tatsuo Ikura )