はじめに
連想配列に要素を追加する実装をした際に、様々な方法があり混乱したのでまとめました。
対象者
この記事は下記のような人を対象にしています。
- 駆け出しエンジニア
- プログラミング初学者
- 「連想配列に要素を追加する方法はいくつか知ってるけど、どうやって使い分けるのかわからない」という人
結論
下記の5つの方法があるので、目的別に使い分けましょう!
No | 内容 | 備考 |
---|---|---|
1 | キーを指定 | 要素を1つずつ追加する場合 |
2 | キーを指定しない | キーを指定する必要がなく、要素を1つずつ追加する場合 |
3 | array_merge関数 | 複数の配列を結合する場合 |
4 | array_merge_recursive関数 | 複数の配列を結合し、キーごとにデータをまとめたい場合 |
5 | プラス(+)演算子 | 複数の配列を結合し、キーの重複がない要素だけ追加したい場合 |
【PHPで連想配列に要素を追加する方法1】キーを指定
最もオーソドックスな手法です。
要素を1つずつ追加する場合に使用すると良いでしょう。
$gundam = array(
'name' => 'ガンダム',
'code' => 'RX-78-2',
'height' => '18.0 m'
);
// キーを指定して要素を追加
$gundam['weight'] = '43.4 t';
print_r($gundam);
// 結果
Array
(
[name] => ガンダム
[code] => RX-78-2
[height] => 18.0 m
[weight] => 43.4 t
)
【PHPで連想配列に要素を追加する方法2】キーを指定しない
その1と似ていますが、キーを指定しなくても連想配列に要素を追加することはできます。
通常の配列と同じ手法ですね。
キーは指定していないので、追加した順番に0から連番で付番されます。
キーを指定する必要がなく、1つずつ要素を追加したい時に使用します。
$gundam = array(
'name' => 'ガンダム',
'code' => 'RX-78-2',
'height' => '18.0 m'
);
// キーを指定しない場合(普通の配列と同じ)
$gundam[] = '1380 kw';
$gundam[] = '55500 kg';
print_r($gundam);
// 結果
Array
(
[name] => ガンダム
[code] => RX-78-2
[height] => 18.0 m
[0] => 1380 kw
[1] => 55500 kg
)
【PHPで連想配列に要素を追加する方法3】array_merge関数
array_merge関数は配列の要素の最後に配列を結合します。
複数の配列を結合したい時に使用します。
$zeon1 = [
0 => 'シャア専用ザク',
1 => 'ヅダ',
2 => 'ギャン'
];
$zeon2 = [
3 => 'ジオング',
4 => 'ザクI',
5 => 'ゲルググ'
];
// 配列を結合
$zeons = array_merge($zeon1, $zeon2);
print_r($zeons);
// 結果
Array
(
[0] => シャア専用ザク
[1] => ヅダ
[2] => ギャン
[3] => ジオング
[4] => ザクI
[5] => ゲルググ
)
また、下記の特徴があります。
- 数字のキーが重複する場合、前のインデックス番号の続きから連続した数値に置き換え
$zeon1 = [
0 => 'シャア専用ザク',
1 => 'ヅダ',
2 => 'ギャン'
];
$zeon2 = [
0 => 'ジオング',
1 => 'ザクI',
2 => 'ゲルググ'
];
// 配列を結合
$zeons = array_merge($zeon1, $zeon2);
print_r($zeons);
// 結果
Array
(
[0] => シャア専用ザク
[1] => ヅダ
[2] => ギャン
[3] => ジオング
[4] => ザクI
[5] => ゲルググ
)
- 文字列のキーが重複する場合、前の配列を後ろの配列が上書き
$zeon1 = [
'char' => 'シャア専用ザク',
'massProduction1' => 'ヅダ',
'massProduction2' => 'ギャン'
];
$zeon2 = [
'char' => 'ジオング',
'massProduction1' => 'ザクI',
'massProduction2' => 'ゲルググ'
];
$zeons = array_merge($zeon1, $zeon2);
print_r($zeons);
// 結果
Array
(
[char] => ジオング
[massProduction1] => ザクI
[massProduction2] => ゲルググ
)
【PHPで連想配列に要素を追加する方法4】array_merge_recursive関数
array_merge関数と似ていますが、文字列のキーが重複する場合、値を上書きせず、同じ文字同士で新しい配列を作ります。
複数の配列を結合し、配列のキーごとにデータをまとめたい時に使用すると良いでしょう。
$gundam = array(
'name' => 'ガンダム',
'code' => 'RX-78-2',
'height' => '18.0 m',
'pilot' => 'アムロ・レイ'
);
$gm = array(
'name' => 'ジム',
'code' => 'RGM-79',
'height' => '18.0 m'
);
$esfs = array_merge_recursive($gundam, $gm);
print_r($esfs);
// 結果
Array
(
[name] => Array
(
[0] => ガンダム
[1] => ジム
)
[code] => Array
(
[0] => RX-78-2
[1] => RGM-79
)
[height] => Array
(
[0] => 18.0 m
[1] => 18.0 m
)
[pilot] => アムロ・レイ
)
【PHPで連想配列に要素を追加する方法5】プラス(+)演算子
array_merge関数と似ていますが、文字列のキーが重複する場合、後ろの配列を前の配列が上書きする点が異なります。
複数の配列を結合し、キーの重複がない要素だけ追加したい場合に使用すると良いでしょう。
$CharTeam = [
'leader' => 'シャア',
'member1' => 'デニム',
'member2' => 'ジーン',
];
$additionalMembers = [
'leader' => 'ガデム',
'member3' => 'クラウン',
];
$newCharTeam = $CharTeam + $additionalMembers;
print_r($newCharTeam);
// 結果
Array
(
[leader] => シャア
[member1] => デニム
[member2] => ジーン
[member3] => クラウン
)
おわりに
PHPで連想配列に要素を追加する方法(array_merge/array_merge_recursiveなど)についてまとめました。
まとめることでそれぞれの手法の特徴が理解できました!