PHPでは、よく多次元配列や連想配列を使用します。この多次元配列や連想配列に要素を追加する方法をご存知ですか?
多次元配列とは?連想配列とは?
多次元配列に要素を追加する方法は?
多次元配列と連想配列の結合の方法は?
といった方に向けて、この記事では
- 【基礎】多次元配列とは何か?
- 【基礎】多次元配列に要素を追加する方法
- 【発展】多次元配列と連想配列の結合の方法
など、多次元配列/連想配列に要素を追加する方法の基礎から発展的な内容について解説していきます。
そもそも多次元配列とは
多次元配列とは、配列の要素を含む配列のことです。多次元配列は以下のように記述します。
$multi_dimensional_array = [
["田中", "25", "male"],
["鈴木", "31", "female"],
["佐藤", "43", "female"]
];
このように配列の中に複数の配列をまとめて格納して管理することができます。
多次元配列に要素を追加する
では、上記のような多次元配列に、別の要素を追加したい場合はどのようにするのでしょう。以下では、配列に要素を追加する方法を詳しく解説しています。
配列の最後に要素を追加
まず、多次元配列の最後に要素を追加する方法を紹介します。多次元配列の最後に要素を追加したい場合は、[]を用いた要素の追加か、array_push関数を用いた要素の追加を行います。
以下は[]を用いて配列の最後に要素を追加しているサンプルコードです。
サンプルコード1
// 多次元配列
$multi_dimensional_array = [
["田中", "25", "male"],
["鈴木", "35", "female"],
["佐藤", "43", "female"]
];
// 配列の最後に要素を追加
$multi_dimensional_array[] = ["山田", "18", "male"];
// 多次元配列を出力
var_dump($multi_dimensional_array);
$multi_dimensional_arrayという多次元配列があり、9行目で$multi_dimensional_array[]に要素を代入しています。
上記サンプルコード1の出力結果を以下に記載します。
array(4) {
[0]=>
array(3) {
[0]=>
string(6) "田中"
[1]=>
string(2) "25"
[2]=>
string(4) "male"
}
[1]=>
array(3) {
[0]=>
string(6) "鈴木"
[1]=>
string(2) "35"
[2]=>
string(6) "female"
}
[2]=>
array(3) {
[0]=>
string(6) "佐藤"
[1]=>
string(2) "43"
[2]=>
string(6) "female"
}
[3]=>
array(3) {
[0]=>
string(6) "山田"
[1]=>
string(2) "18"
[2]=>
string(4) "male"
}
}
追加した要素が、arrayの最後に格納されていることを確認できると思います。また、配列の最後に要素を追加する別の方法として、array_push関数があります。array_push関数は、第一引数に追加される配列を、第2引数に追加する要素を指定します。
それでは試しにサンプルコード1の9行目を以下のサンプルコードのようにarray_push関数に置き換えて実行してみてください。
サンプルコード2
// 配列の最後に要素を追加
array_push($multi_dimensional_array, ["山田", "18", "male"]);
この場合も、サンプルコード1と同様の出力結果が確認できます。
配列の先頭に要素を追加
次に、配列の先頭に要素を追加する方法を紹介します。この場合は、array_unshift関数を使用します。使い方はサンプルコード2のarray_push関数と同様です。
以下のサンプルコードは、サンプルコード1の9行目をarray_unshift関数に変えたものです。
サンプルコード3
// 多次元配列
$multi_dimensional_array = [
["田中", "25", "male"],
["鈴木", "35", "female"],
["佐藤", "43", "female"]
];
// 配列の先頭に要素を追加
array_unshift($multi_dimensional_array, ["山田", "18", "male"]);
// 多次元配列を出力
var_dump($multi_dimensional_array);
サンプルコード3の出力結果は以下です。
array(4) {
[0]=>
array(3) {
[0]=>
string(6) "山田"
[1]=>
string(2) "18"
[2]=>
string(4) "male"
}
[1]=>
array(3) {
[0]=>
string(6) "田中"
[1]=>
string(2) "25"
[2]=>
string(4) "male"
}
[2]=>
array(3) {
[0]=>
string(6) "鈴木"
[1]=>
string(2) "35"
[2]=>
string(6) "female"
}
[3]=>
array(3) {
[0]=>
string(6) "佐藤"
[1]=>
string(2) "43"
[2]=>
string(6) "female"
}
}
出力結果からわかる通り、array_unshift関数で追加した要素が先頭に追加されていることが確認できます。
多次元配列と連想配列を結合する
最後に配列と配列の結合の方法を解説します。その前に、連想配列について説明しておこうとおもいます。
連想配列とは
連想配列とは、配列内の要素が連番ではなく、文字列で管理されている配列の事を指します。
$associative_array = [
"staff" => ["後藤", "21", "male"],
"leader" => ["小林", "28", "female"],
"manager" => ["伊藤", "52", "male"]
];
このような形で、連想配列は各要素に"staff"、"leader"、"manager"という文字列が指定されています。多次元配列かつ連想配列である配列はよく出てくるので、この機会に覚えておきましょう。
配列を結合する方法
それでは多次元配列や連想配列の結合の方法を解説していきます。まず、下記のような配列A,Bを用意します。
// 配列A
$array_a = [
"fruits" => ["りんご", "赤色"],
["野球", "サッカー"]
];
// 配列B
$array_b = [
["洋食", "和食"],
"drink" => ["牛乳", "白色"],
"fruits" => ["みかん", "橙色"]
];
// array_mergeを使った配列結合
var_dump(array_merge($array_a, $array_b));
これらの配列を結合するためには、array_mergeメソッドを使用します。
array_merfgeメソッドは、引数に2つの配列を持ち、第一引数の配列に第二引数の配列を上書きします。(要素のキーが同じものは上書きされ、違うものは追加されます。)それでは、出力結果を確認してみましょう。
array(4) {
["fruits"]=>
array(2) {
[0]=>
string(9) "みかん"
[1]=>
string(6) "橙色"
}
[0]=>
array(2) {
[0]=>
string(6) "野球"
[1]=>
string(12) "サッカー"
}
[1]=>
array(2) {
[0]=>
string(6) "洋食"
[1]=>
string(6) "和食"
}
["drink"]=>
array(2) {
[0]=>
string(6) "牛乳"
[1]=>
string(6) "白色"
}
}
上記出力結果より、別々だった配列A,Bが一つの配列になっていることが確認できます。より詳細に確認してみると、配列Aの要素の後ろに配列Bの要素が追加されていることがわかると思います。
ただ、キーが"fruits"の要素は配列Aにも配列Bにもあるため、配列Bの"fruits"の要素が配列Aを上書きする形になっています。このように、array_merfgeメソッドは引数の配列Aと配列Bを一つの配列に結合することができるのです。
まとめ
この記事では、多次元配列に要素を追加する方法をサンプルプログラムを用いて解説しました。 多次元配列の最後に要素を追加するにはarray_pushメソッドを利用し、多次元配列の先頭に要素を追加するにはarray_unshiftメソッドを利用します。
また、array_mergeメソッドを利用した配列の結合方法も解説しているので、これを機にぜひ配列の追加/結合についてマスターしてください!