PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPでの多次元配列の操作

このチュートリアルの前半で、キーと値のペアの単一のリストである配列について説明しました。
ただし、配列には複数のキーを持つ値を格納することがあります。
これを多次元配列と言います。

PHPでの多次元配列

多次元配列は、1つ以上の配列を含む配列です。
PHPは2,3,4,5またはそれ以上のレベルの多次元配列を格納することが出来ます。
しかし、3つ以上のレベルの配列は、非常に管理が難しいのであまり利用されることはありません。

配列の次元は、要素の値を得るためには、必要なインデックスの数を示します。
2次元配列の場合、要素の値を得るためには、2つのインデックスが必要です。
3次元配列の場合、要素の値を得るためには3つのインデックスが必要です。

PHPでの2次元配列

2次元配列は配列の配列です。まず、次の表を見てください。

名前 在庫 販売数
Volvo 22 18
BMW 15 13
Saab 5 2
Land Rover 17 15

上記のテーブルのデータを2次元配列に格納するには、次のようにします。

<?php

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

?>

2次元配列$cars配列には4つの配列があり、行と列の2つのインデックスがあります。
$cars配列の要素にアクセスするには、2つのインデックス(行と列)を指す必要があります。

<?php

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

実行結果

forループを別のforループの中に入れて、$cars配列の要素を取得することもできます。(この方法でも2つのインデックスを指定する必要があります。)

<?php

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}

?>

実行結果

また、下のようにforeach文を使用することで配列の値を出力することが出来ます。

<?php

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

foreach ($cars as $key1 => $value1) {
   foreach ($value1 as $key2 => $value2) {
      
            echo $value2."<br>";  
  }
}

?>

実行結果