第19回: 多次元配列 — 実務データは「入れ子構造」が基本

章: 第2章: 配列とデータ処理

ユーザー一覧・商品リスト・注文履歴——実務データは必ず入れ子になっています

データベースから取得したユーザー一覧は「複数のユーザー情報(連想配列)が並んだ配列」です。この「配列の中に配列」が多次元配列です。構造を把握していないと値の取得で迷いますが、パターンを覚えると一気に扱いやすくなります。

まずコードを動かしてみる


<?php
$users = [
    ['name' => 'A', 'age' => 20],
    ['name' => 'B', 'age' => 25],
];
echo $users[1]['name'];

$users[1]['name'] で2番目のユーザーの名前を取得しています。添字と連想配列のキーを組み合わせてアクセスします。

多次元配列の構造比較

構造 用途 アクセス例
添字配列の配列 同種データのリスト(スコア一覧など) $arr[0][1]
連想配列の配列 レコードのリスト(ユーザー一覧など) $arr[0]['name']
連想配列の連想配列 ネスト構造(設定ファイルなど) $arr['db']['host']

悪い例(構造を把握せずにアクセスして失敗)


<?php
$users = [
    ['name' => 'A', 'age' => 20],
    ['name' => 'B', 'age' => 25],
];
echo $users['name']; // Notice: 添字配列にキーでアクセスしてしまっている

良い例(print_rで構造を確認してからアクセス)


<?php
$users = [
    ['name' => 'A', 'age' => 20],
    ['name' => 'B', 'age' => 25],
];
print_r($users); // 構造を確認
foreach ($users as $user) {
    echo $user['name'] . ': ' . $user['age'] . PHP_EOL;
}

チェックポイント: 多次元配列で迷ったら必ず print_r()var_dump()全体構造を先に表示しましょう。「何階層あるか」「キーは文字列か数値か」を視覚的に確認してからアクセスすると、エラーが大幅に減ります。

まとめ & 次のステップ

  • 多次元配列は「配列の中に配列」が入れ子になった構造
  • DBから取得したレコード一覧は「連想配列の配列」が基本パターン
  • $arr[i]['key'] の形で順番にキーを重ねてアクセスする
  • 構造が不明なときは print_r()var_dump() で可視化してから操作する
  • foreach のネストで多次元配列の全要素を処理できる

次回は 配列関数を学びます。array_maparray_filterarray_reduce など、配列処理を短く安全に書ける関数を習得しましょう。

Related Articles