やっぱりパソコンはむずかしいんだよ!
t-eyes.com
 

 


 

 

 

 

PHPなとこ>>SAMPLE>>配列同士の結合

■複数の配列を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() は、 二つ以上の配列の要素をマージし、 前の配列の最後にもう一つの配列の値を追加します。 マージした後の配列を返します。
入力配列が同じ文字列のキーを有している場合、 これらのキーの値は配列に一つのマージされます。これは再帰的に行われます。 このため、値の一つが配列自体を指している場合、 この関数は別の配列の対応するエントリもマージします。 しかし、配列が同じ数値キーを有している場合、 後の値は元の値を上書せず、追加されます。





※使用に関して発生した問題の責任は、一切負いませんのでご了承ください。
バグや不具合等に関しては、ご報告頂ければ善処します。

 


【TOP】


© 2005 t-eyes.com