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,
)
キーと値のペアを取得
キーと値のペアをすべて取得するには、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の連想配列は、設定ファイルの管理やデータのマッピングなど多くの場面で役に立つ代物です。簡単にデータの管理や操作を行えるので、是非習得していきましょう。
コメント