2つの配列を1つの配列にマージする必要がありますが、必要なのは、両方のメインデータが重複する前に削除することです(重複値は意味します)、マージするときは一意の値のみが必要です。
どうやってやるの?
これは配列の例です:
最初の配列
array(3) {
[0]=> object(stdClass)#17 (1) {
["email"]=> string(7) "gffggfg"
}
[1]=> object(stdClass)#18 (1) {
["email"]=> string(6) "[email protected]"
}
[2]=> object(stdClass)#19 (1) {
["email"]=> string(6) "wefewf"
}
}
2番目の配列
array(3) {
[0]=> object(stdClass)#17 (1) {
["email"]=> string(7) "[email protected]"
}
[1]=> object(stdClass)#18 (1) {
["email"]=> string(6) "wefwef"
}
[2]=> object(stdClass)#19 (1) {
["email"]=> string(6) "wefewf"
}
}
array_merge()
関数と array_unique()
関数を組み合わせることができます(両方のタイトルは一目瞭然です)
$array = array_unique (array_merge ($array1, $array2));
質問を正しく理解した場合:
$a1 = Array(1,2,3,4);
$a2 = Array(4,5,6,7);
$array = array_diff(array_merge($a1,$a2),array_intersect($a1,$a2));
print_r($array);
帰る
Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 5
[6] => 6
[7] => 7
)
少し遅れた答えですが、配列結合演算子+
は非常に大きな仕事をします(3番目のセクションで here を見つけました)。
$array1 + $array2 = $array //if duplicate found, the value in $array1 will be considered ($array2 value for array_merge, if keys clearly specified)
より高速なソリューション:
function concatArrays($arrays){
$buf = [];
foreach($arrays as $arr){
foreach($arr as $v){
$buf[$v] = true;
}
}
return array_keys($buf);
}
$array = concatArrays([$array1, $array2]);