PHP - 連想配列
公開日:2020-12-22 更新日:2020-12-22
[PHP]
1. 概要
配列は [ ] の中にインデックスを指定して要素を特定しましたが、
連想配列では、インデックスの代わりに任意の文字列(キー)を使います。
ちなみに、Java では Map、C# では Dictionary と呼ばれています。
連想配列では、インデックスの代わりに任意の文字列(キー)を使います。
ちなみに、Java では Map、C# では Dictionary と呼ばれています。
2. 基本
[ ] または array() で連想配列を生成する時は、「キー => 値」で要素を指定します。
あとは、要素の指定がインデックス(数値)からキー(文字列)に変わるだけで、配列と同様に扱うことができます。
要素を削除する場合は、unset() を使います。
あとは、要素の指定がインデックス(数値)からキー(文字列)に変わるだけで、配列と同様に扱うことができます。
//連想配列の生成
$map = [
'id' => 123,
'name' => 'taro',
'addr1' => 'tokyo'
];
//追加 または 上書き
$map['addr2'] = 'chiyoda';
//取得
var_dump($map['name']);
var_dump($map);
実行結果string(4) "taro"
array(4) {
["id"]=>
int(123)
["name"]=>
string(4) "taro"
["addr1"]=>
string(5) "tokyo"
["addr2"]=>
string(7) "chiyoda"
}
要素を削除する場合は、unset() を使います。
$map = [
'id' => 123,
'name' => 'taro',
'addr1' => 'tokyo'
];
unset($map['name']);
var_dump($map);
実行結果array(2) {
["id"]=>
int(123)
["addr1"]=>
string(5) "tokyo"
}
3. ループして各要素を取得
要素を1つずつ取得するには、foreach を使います。
値と一緒にキーを取得したい場合は、as と => を使います。
$map = [
'id' => 123,
'name' => 'taro',
'addr1' => 'tokyo'
];
foreach ($map as $value) {
print($value . "\n");
}
実行結果123
taro
tokyo
値と一緒にキーを取得したい場合は、as と => を使います。
$map = [
'id' => 123,
'name' => 'taro',
'addr1' => 'tokyo'
];
foreach ($map as $key => $value) {
print("['" . $key . "'] = " . $map[$key] . "\n");
}
実行結果['id'] = 123
['name'] = taro
['addr1'] = tokyo
4. キー一覧の取得
$map = [
'id' => 123,
'name' => 'taro',
'addr1' => 'tokyo'
];
$keys = array_keys($map);
foreach ($keys as $key) {
print($map[$key] . "\n");
}
実行結果123
taro
tokyo
5. 連想配列の配列
連想配列をさらに配列することもできます。
また、array_column() を使うと、指定した項目だけ取得することができます。
連想配列の配列は、次のようにしても同じように生成できます。
連想配列を1件ずつ追加することの方が多いです。
また、array_column() を使うと、指定した項目だけ取得することができます。
$members = [
[ 'id' => 1, 'name' => 'taro' ],
[ 'id' => 2, 'name' => 'hanako' ],
[ 'id' => 3, 'name' => 'ichiro' ]
];
$names = array_column($members, 'name');
var_dump($names);
実行結果array(3) {
[0]=>
string(4) "taro"
[1]=>
string(6) "hanako"
[2]=>
string(6) "ichiro"
}
連想配列の配列は、次のようにしても同じように生成できます。
$members = [];
$members[] = ['id' => 1, 'name' => 'taro' ];
$members[] = ['id' => 2, 'name' => 'hanako'];
$members[] = ['id' => 3, 'name' => 'ichiro'];
プログラム作成時に値が決まっていることは稀なので、連想配列を1件ずつ追加することの方が多いです。