PHP 多次元配列
1. PHP 多次元配列
多次元配列(Multidimensional Array)とは、1つ以上のアレイ(Array)を要素として保持しているアレイのことです。
PHP は 2段階、3段階、4段階、あるいは 5段階以上の深さを持つ多次元配列をサポートしています。しかし、実務上の経験から言うと、3段階を超える深さのアレイは、多くの開発者にとって管理やデバッグが非常に困難になります。
2. PHP 二次元配列
二次元配列は「アレイのアレイ」です(同様に、三次元配列は「アレイのアレイのアレイ」となります)。
以下のテーブル(表)のデータを例に考えてみましょう:
| 名前(ブランド) | 在庫数 (Stock) | 販売数 (Sold) |
|---|---|---|
| Volvo | 22 | 18 |
| BMW | 15 | 13 |
| Saab | 5 | 2 |
| Land Rover | 17 | 15 |
この表のデータは、以下のように二次元配列として格納(ストア)できます。
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);この二次元の $cars アレイには 4 つのアレイが含まれており、アクセスには行(Row)と列(Column)という 2 つのインデックス(Index)が必要になります。
$cars アレイの各要素にアクセスするには、これら 2 つのインデックスを指定してください。
2.1 例:特定の要素へのアクセス
echo $cars[0][0].": 在庫: ".$cars[0][1].", 販売済み: ".$cars[0][2].".<br>";
echo $cars[1][0].": 在庫: ".$cars[1][1].", 販売済み: ".$cars[1][2].".<br>";
echo $cars[2][0].": 在庫: ".$cars[2][1].", 販売済み: ".$cars[2][2].".<br>";
echo $cars[3][0].": 在庫: ".$cars[3][1].", 販売済み: ".$cars[3][2].".<br>";アレイの「次元」とは、その要素を選択するために必要なインデックスの数を示します。
- 二次元配列の場合、要素を選択するために 2 つのインデックスが必要です。
- 三次元配列の場合、要素を選択するために 3 つのインデックスが必要です。
3. 多次元配列のループ処理
多次元配列のすべての要素を走査(スキャン)するには、for ループや foreach ループを使用します。
ここでは、for ループの内側に別の for ループをネスト(Nest)させて、$cars アレイの要素を取得する例を紹介します。
3.1 例:ネストされた for ループによる走査
for ($row = 0; $row < 4; $row++) {
echo "<p><b>行番号 $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}また、foreach ループをネストさせて使用することも可能です。以下の例では、結果を HTML のテーブル形式で出力しています。
3.2 例:ネストされた foreach ループによるテーブル出力
echo "<table>";
echo "<tr><th>ブランド</th><th>在庫数</th><th>販売数</th></tr>";
foreach ($cars as $row) {
echo "<tr>";
foreach ($row as $cell) {
echo "<td>" . $cell . "</td>";
}
echo "</tr>";
}
echo "</table>";