■複数の配列を1つにしたい
配列同士を結合させ1つの配列にすることが出来ます。
・array_marge 1次元配列の結合
※同一のキーを持つものは、後に記載したものに置き換わります。
※キーが添字番号の場合は、追加されるので配列は増える事になります。
・array_
marge_recursive 多次元配列の結合
※同一のキーを持つものは、上書きされずに重複したキーのほかの要素として追加されます。
※キーが添字番号の場合は、追加されるので配列は増える事になります。
※■の文字色は説明文
スクリプト例:
<?PHP
$array1=array("key1"=>"a","b","c","d");
$array2=array("key1"=>"aa","bb","cc","dd");
$arrays=array_merge($array1,$array2);
print_r ($arrays);
print '<P>';
//多次元配列の場合
$array1=array("aa"=>array("key1"=>"a1","a2","a3","a4"),"bb"=>array('b1','b2'));
$array2=array("aa"=>array("key1"=>"a5","a6","a7","a8"),"bb"=>array('b1','b2'));
$arrays=array_merge_recursive($array1,$array2);
print_r ($arrays); ?>
出力結果:
Array ( [key1] => aa [0] => b [1] => c [2] => d [3] => bb
[4] => cc [5] => dd )
Array ( [aa] => Array ( [key1] => Array ( [0] => a1 [1] => a5
) [0] => a2 [1] => a3 [2] => a4 [3] => a6 [4] => a7 [5]
=> a8 ) [bb] => Array ( [0] => b1 [1] => b2 [2] => b1
[3] => b2 ) )
|
※多次元配列の場合はちょっとわかりにくいですが、上のサンプルでマージ前は
$array1[aa][key1] で値を取得可能でしたが、マージして得た配列は、
同一キーが存在したので配列が作成され、$arrays[aa][key1][0]
としなければなりません。
多次元配列ではない場合、$arrays=$array1+ $array2 と+を使っての配列の結合もできます。こちらは数値であってもキーが保持されますので、同一の数値がキーがある場合その値は最初の配列の値になります。
※■の文字色は説明文
スクリプト例:
<?PHP
$array1=array("key1"=>"a","b","c","d");
$array2=array("key1"=>"aa","bb","cc","dd","ee");
$array3=array("key1"=>"A","B","C","D","E","F");
$arrays=$array
+ $array2 +
$array3;
print_r ($arrays);
?>
出力結果:
Array ( [key1] => a [0] => b [1] => c [2] => d [3] => ee
[4] => F )
|
※キーkey1の値や他の要素も上書きされない事に注意してください
array_merge
1つまたは複数の配列をマージする
説明
array array_merge ( array
array1 [, array array2
[, array ...]] )
array_merge()は、前の配列の後ろに配列を追加することにより、1つまたは複数の配列の要素をマージし、得られた配列を返します。
入力配列が同じキー文字列を有していた場合、そのキーに関する後に指定された 値が、前の値を上書きします。しかし、配列が同じ添字番号を有していても
値は加算されるため、このようなことは起きません。
配列が一つだけ指定され、その配列が数字で添字指定されていた場合、
キーの添字が連続となるように振り直されます。
・
array_merge_recursive二つ以上の配列を再帰的にマージする
説明
array array_merge_recursive
( array array1,array array2 [, array
...] )
array_merge_recursive() は、
二つ以上の配列の要素をマージし、 前の配列の最後にもう一つの配列の値を追加します。
マージした後の配列を返します。
入力配列が同じ文字列のキーを有している場合、
これらのキーの値は配列に一つのマージされます。これは再帰的に行われます。 このため、値の一つが配列自体を指している場合、 この関数は別の配列の対応するエントリもマージします。
しかし、配列が同じ数値キーを有している場合、 後の値は元の値を上書せず、追加されます。
※使用に関して発生した問題の責任は、一切負いませんのでご了承ください。
バグや不具合等に関しては、ご報告頂ければ善処します。
|