PHPのarray_merge_recursive()
関数は、複数の配列を再帰的に結合し、ひとつの配列を、新たに作る組み込み関数。
結合する配列に、同じ文字列のキーの配列要素がある場合、同じ文字列のキーのすべての配列要素の値を配列に格納し、そのキーの値とする。
定義
配列型 array_merge_recursive( 配列型 $array1[, 配列型 $...] );
パラメータ
- 配列型 $array1
最初の配列。
- 配列型 $…
再帰的に結合する配列。
カンマ
,
で区切り、複数の配列を指定できる。
戻り値
再帰的結合後の配列。
構文
配列を結合
配列 = array_merge_recursive( 配列1, 配列2 );
「配列1」と「配列2」を再帰的に結合し、新たに「配列」を作る。
5つの配列を結合
配列 = array_merge_recursive( 配列1, 配列2, 配列3, 配列4, 配列5 );
「配列1」から「配列5」の5つの配列を再帰的に結合し、新たに「配列」を作る。
サンプル
複数の連想配列を再帰的に結合し、新たな多次元配列を作成
<pre>
<?php
$array1 = array(
"red" => "レッド",
"blue" => "ブルー"
);
$array2 = array(
"blue" => "青",
"green" => "緑"
);
$array3 = array(
"blue" => "あお",
"green" => "みどり"
);
$varArray = array_merge_recursive( $array1, $array2, $array3 );
print_r( $varArray );
?>
</pre>
<?php
$array1 = array(
"red" => "レッド",
"blue" => "ブルー"
);
$array2 = array(
"blue" => "青",
"green" => "緑"
);
$array3 = array(
"blue" => "あお",
"green" => "みどり"
);
$varArray = array_merge_recursive( $array1, $array2, $array3 );
print_r( $varArray );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[red] => レッド
[blue] => Array
(
[0] => ブルー
[1] => 青
[2] => あお
)
[green] => Array
(
[0] => 緑
[1] => みどり
)
)
(
[red] => レッド
[blue] => Array
(
[0] => ブルー
[1] => 青
[2] => あお
)
[green] => Array
(
[0] => 緑
[1] => みどり
)
)
重複しているキー「blue」の値は、「ブルー」と「青」と「あお」を格納した配列になっている点に注目。
重複しているキー「green」の値は、「緑」と「みどり」を格納した配列になっている点に注目。
多次元配列と多次元配列を再帰的に結合し、新たな多次元配列を作成
<pre>
<?php
$array1 = array(
"english" => array(
"red" => "Red",
"blue" => "Blue",
),
"katakana" => array(
"red" => "レッド",
"blue" => "ブルー",
)
);
$array2 = array(
"katakana" => array(
"blue" => "ブルー",
"green" => "グリーン"
),
"kanji" => array(
"blue" => "青",
"green" => "緑"
)
);
$varArray = array_merge_recursive( $array1, $array2 );
print_r( $varArray );
?>
</pre>
<?php
$array1 = array(
"english" => array(
"red" => "Red",
"blue" => "Blue",
),
"katakana" => array(
"red" => "レッド",
"blue" => "ブルー",
)
);
$array2 = array(
"katakana" => array(
"blue" => "ブルー",
"green" => "グリーン"
),
"kanji" => array(
"blue" => "青",
"green" => "緑"
)
);
$varArray = array_merge_recursive( $array1, $array2 );
print_r( $varArray );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[english] => Array
(
[red] => Red
[blue] => Blue
)
[katakana] => Array
(
[red] => レッド
[blue] => Array
(
[0] => ブルー
[1] => ブルー
)
[green] => グリーン
)
[kanji] => Array
(
[blue] => 青
[green] => 緑
)
)
(
[english] => Array
(
[red] => Red
[blue] => Blue
)
[katakana] => Array
(
[red] => レッド
[blue] => Array
(
[0] => ブルー
[1] => ブルー
)
[green] => グリーン
)
[kanji] => Array
(
[blue] => 青
[green] => 緑
)
)
重複しているキーである「katakana」の「blue」の値は、「ブルー」と「ブルー」を格納した配列になっている点に注目。