ITHACK
~ みんなのIT部門 ~

【PHP】連想配列 – キーが文字列の配列

配列はキーに文字列を使うことができ、そのような配列を連想配列と呼びます。

ここでは、連想配列について解説します。

配列については次の記事をご覧ください。

  • 連想配列

連想配列とは

連想配列とは配列のキーに文字列を使った配列です。

基本構文

数値をキー(インデックス)とした配列と同様で、宣言、初期化、値の記憶、値の取得があります。
基本構文もキーを文字列とすること以外は同じになります。

宣言

$変数名 = array()
$変数名 = []

初期化

$変数名 = [
    キー1 => 値1,
    キー2 => 値2,
    キー3 => 値3,
];

ダブルアロー演算子(=>)を使用してキーと値をセットで記述します。

値の記憶

$変数名[キー] = 値

値の取得

$変数名[キー]

サンプルコード

プロフィールを記憶する連想配列のサンプルコードをご覧ください。

<?php

// 連想配列の宣言(初期化)
$profile = [
    'name' => 'Watanabe You',
    'birthday' => '4/17',
    'height' => 157,
];

// 値の取得と出力
echo $profile['name']."\n";
echo $profile['birthday']."\n";
echo $profile['height']."\n";

// 既存キーに値を代入
$profile['height'] = 160;
// 値の取得と出力
echo $profile['height']."\n";

// 新規キーで値を代入
$profile['hobby'] = 'Muscle training';
// 値の取得と出力
echo $profile['hobby']."\n";

?>
Watanabe You
4/17
157
160
Muscle training

各コードの概要は次のようになります。

行数 概要
4~8 連想配列の宣言と初期化
11~13 連想配列の値を全て出力
16 連想配列のキーが'height'の値を再代入
18 連想配列のキーが'height'の値を出力
21 連想配列に新しいキー'hobby'で値を記憶
23 連想配列のキーが'hobby'の値を出力

配列の宣言(初期化)、値の記憶、値の取得を行うコードです。
キーが数値の配列と同様に値の再代入や新しいキーで値を記憶することができます。

注意点

存在しないキーの値を取得しようとするとエラーになります。
例えばサンプルコードの23行目のキーを'age'にすると次のような実行結果になります。

実行結果

PHP Warning:  Undefined array key "age" in sample.php on line 23

Warning: Undefined array key "age" in sample.php on line 23

これは『'age'というキーは存在しない』というエラーです。
このように存在しないキーの値を取得しようとするとエラーになるので注意しましょう。

演習問題

問題1

次の実行結果になる猫の情報を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 猫の情報は連想配列を使って記憶する
  • 連想配列のキーは'name''birthday''type'とする
  • 出力は連想配列を使用する
name     : Tama
birthday : 4/24
type     : Munchkin

問題2

次の実行結果になる犬の情報を出力するプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 犬の情報は連想配列を使って記憶する
  • 連想配列のキーは'name''birthday''type'とする
  • 出力する値のキーはコマンドライン引数で与える
  • 出力は連想配列を使用する
$ php practice.php name
name : Pochi
$ php practice.php birthday
birthday : 7/24
$ php practice.php name
type : Maltipoo

まとめ

連想配列はキーに文字列を使用した配列です。
各配列の値に名前を付けれるイメージで、処理内容にってはコードの可読性を上げることができますので、覚えておきましょう。