【PHP】連想配列の基本ガイド:使い方や記述方法について解説

PHPには通常の配列の他に、連想配列があります。連想配列は、キーとして文字列や整数を使い、そのキーに関連付けられた値を格納します。キーと値のペアでデータを管理できるため、データへのアクセスが直感的に行えます。この記事ではそんな連想配列について解説していきます。

連想配列とは

連想配列は、キーと値をペアで管理します。キーを指定して、値にアクセスします。宣言の構文は以下のようになります。

array(キー1 => 値1, キー2 => 値2, …)

または

[キー1 => 値1, キー2 => 値2, …]

通常の配列と同じく宣言には[]を使います。ただし、各要素の形式は”キー => 値”になります。

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];

上記の例では、学校のクラスの名前(キー)と人数(値)をペアにした連想配列を定義しています。

値の取得

インデックスにキーを指定すると値を取得できます。

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
print $count_per_class['1A'];

出力

30

キーに’1A’を指定したので、対応した値である30が取得できました。

キーの存在確認

存在しないキーを指定すると警告が表示されます。警告を回避するには、キーが存在するかどうか確認する必要があります。

配列にキーがあるか調べるにはarray_key_exists関数を使います。

array_key_exists(キー, 配列)

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
if(array_key_exists('1A', $count_per_class)) {
    print $count_per_class['1A'];
}

上記の例では、配列に’1A’のキーがあるか確認して、見つかった場合にのみ’1A’に対応する値を出力しています。

ペアの追加

キーと値のペアを追加したいときは以下のように記述します。

連想配列[キー] = 値

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
$count_per_class['2A'] = 28;
var_export($count_per_class);

出力

array (
  '1A' => 30,
  '1B' => 32,
  '1C' => 34,
  '2A' => 28,
)

値の上書き

値を上書きしたいときは、追加のときと同様以下のように記述します。

連想配列[キー] = 値

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
$count_per_class['1A'] = 28;
var_export($count_per_class);

出力

array (
  '1A' => 28,
  '1B' => 32,
  '1C' => 34,
)

‘1A’に対応した値を上書きしています。

ペアの削除

ペアを削除する際は、unset関数を使います。

unset(配列[キー])

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
unset($count_per_class['1A']);
var_export($count_per_class);

出力

array (
  '1B' => 32,
  '1C' => 34,
)

便利な関数

全ての値の取得

全ての値を取得するときはarray_values関数を使います。

array_values(配列)

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
$values = array_values($count_per_class);
var_export($values);

出力

array (
  0 => 30,
  1 => 32,
  2 => 34,
)

全てのキーの取得

全てのキーを取得するときはarray_keys関数を使います。

array_keys(配列)

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
$keys = array_keys($count_per_class);
var_export($keys);

出力

array (
  0 => '1A',
  1 => '1B',
  2 => '1C',
)

連想配列の結合

連想配列同士を結合するにはarray_merge関数を使います。

array_merge(配列1, 配列2, …)

$count_per_class1 = ['1A' => 30, '1B' => 32, '1C' => 34];
$count_per_class2 = ['2A' => 27, '2B' => 30, '2C' => 29];
$result = array_merge($count_per_class1, $count_per_class2);
var_export($result);

出力

array (
  '1A' => 30,
  '1B' => 32,
  '1C' => 34,
  '2A' => 27,
  '2B' => 30,
  '2C' => 29,
)

キーが重複した場合、後ろの引数で指定した連想配列で値を上書きします。

参考URL
PHP: array_merge – Manual

キーと値のペアを取得

キーと値のペアをすべて取得するには、foreach文を使います。

foreach (連想配列 as $キー => $値) {
// 処理
}

foreach文を連想配列に使うと、連想配列のすべてのペアについて1つずつループ処理していきます。

$count_per_class = ['1A' => 30, '1B' => 32, '1C' => 34];
foreach($count_per_class as $key => $value) {
    print "キー:{$key}, 値:{$value}" . PHP_EOL;
}

出力

キー:1A, 値:30
キー:1B, 値:32
キー:1C, 値:34

まとめ

PHPの連想配列は、設定ファイルの管理やデータのマッピングなど多くの場面で役に立つ代物です。簡単にデータの管理や操作を行えるので、是非習得していきましょう。

コメント