【PHP初心者向け】連想配列は「名札付きロッカー」だ!番号管理からの解放と矢印の正体

連想配列 プログラミング

以前投稿した配列の解説記事で、配列は「0から始まる番号で管理する箱」だと説明しました。しかし、現実はそう単純ではありません。

想像してください。あなたの友人の電話番号を探すとき、電話帳の「0番目」や「5番目」を探しますか?

探しません。「名前」で探すはずです。

「出席番号14番」と言われても、誰の顔も浮かびません。しかし「田中」と言われれば、あのメガネの顔が浮かびます。

数字での管理には限界があります。人間は、意味のない数字を覚えるのが苦手な生き物です。

そこで登場するのが「連想配列」です。

これは、無機質な番号の代わりに「好きなラベル(キー)」を貼ってデータを管理する、人間に優しい収納術です。


構造:番号ではなく「キー」で紐付ける

普通の配列(インデックス配列)は、データを入れると勝手に「0, 1, 2…」と番号が振られました。

連想配列では、この番号を自分で決められます。しかも数字である必要はありません。「name」でも「email」でも「hp」でも、好きな文字を使えます。

  • キー(Key): ラベル、名札。データを取り出すための合言葉。
  • 値(Value): 箱の中身。実際のデータ。

この2つをペアにして保存します。


書き方:矢印(=>)で指名する

PHPで連想配列を作るときは、象徴的な記号が登場します。
=> です。

「ダブルアロー」などという偉そうな名前がありますが、ただの「矢印」です。

「キー(ラベル)は、この値を指しているぞ」という意味です。

$user = [
    "name" => "田中",
    "age" => 25,
    "job" => "勇者"
];Code language: PHP (php)

見てください。この圧倒的な分かりやすさ。

「0番目が田中」ではなく、「nameは田中」と書いてある。

連想配列に慣れれば、コードを読んだだけでそこに何が入っているかが一目瞭然です。

ちなみに、最後の項目の後ろにもカンマをつけておくと、後で項目を足すときにエラーにならず便利です。以下のように、連想配列の最後の要素にもカンマを足しておけばOKです。

$user = [
    "name" => "田中",
    "age" => 25,
    "job" => "勇者", // カンマを入れておくと、後で行コピーするときに便利
];Code language: PHP (php)

プロジェクトのコーディング規約でルールになっているのであれば、それに従うのがいいでしょう。


取り出し方:ラベルを指定して開ける

データを取り出すときも、番号を数える必要はありません。

設定したキー(ラベル)を指定するだけです。

echo $user["name"]; // 結果:田中
echo $user["job"]; // 結果:勇者Code language: PHP (php)

もしこれを普通の配列でやろうとしたら、「えーっと、名前は0番目で、職業は2番目だから…」と指折り数える羽目になります。

連想配列なら、順番が変わっても関係ありません。「job」というラベルがついている限り、どこにあっても「勇者」を取り出せます。


使い所:データベースとの相性が抜群

Webシステム開発の現場では、普通の配列よりも連想配列の方が出番が多いです。

なぜなら、データベースから取得したデータは、基本的にこの形式だからです。

会員サイトを作るとします。

一般的にデータベースには「ID」「価格」「在庫」といった項目が作られているかと思います。これらをプログラムで扱うとき、連想配列ならそのままのラベルで扱えます。

// データベースから取ってきた情報のイメージ
$product = [
    "id" => 105,      // ID
    "price" => 3000,  // 価格
    "stock" => 0      // 在庫
];Code language: PHP (php)

「price」を見れば価格だとわかる。「stock」が0なら在庫切れだとわかる。

コード自体が説明書になります。


まとめ:意味のあるデータを作れ

普通の配列は「リスト(一覧)」を作るのに向いています。
連想配列は「オブジェクト(物の詳細)」を表現するのに向いています。

  • 普通の配列["田中", "佐藤", "鈴木"] (ただの並び)
  • 連想配列["name" => "田中", "height" => 170] (田中の詳細スペック)

「0番目」や「1番目」といった機械的なルールに縛られるのはやめましょう。

データに名前(キー)を与え、人間が理解できる状態で管理する。それがバグを減らし、未来の自分を助けることになります。

次回は、この配列をさらに便利に回す「foreach文」について、在庫処分のセールに例えて解説します。

コメント

タイトルとURLをコピーしました