二つの配列をマージして重複するデータを取り除く
・・・例によって嵌ったのでメモしておく
単純な配列の場合、array_mergeして、array_uniqueで問題ないが、対象が配列の配列だった場合は、期待通りの動作をしないため嵌った
どうやら、配列の配列の場合、arrayは文字として解釈され、その中身は解釈されないことが原因のようだ。
解決策はこんな感じ
<?php $array1 = array( 1 => array('hoge' => 'aaa'), 2 => array('hoge' => 'BBB'), 3 => array('hoge' => 'ccc'), 4 => array('hoge' => 'DDD'), 5 => array('hoge' => 'EEE') ); $array2 = array(11 => array('hoge' => 'aaa'), 12 => array('hoge' => 'BBB'), 13 => array('hoge' => 'CCC'), 14 => array('hoge' => 'ddd'), 15 => array('hoge' => 'FFF') ); // 二つの配列をマージして重複するデータを取り除く $merge_array = array_merge($array1, $array2); //まずはマージする $merge_array = array_map('serialize', $merge_array); //シリアライズしてarray()から文字列に変換 $merge_array = array_unique($merge_array); //ユニークを取る $merge_array = array_map('unserialize' , $merge_array); //アンシリアライズしてarray()に戻す printf("%s\n",var_export($merge_array, true)); ?>