Вопрос по arrays, merge, php – PHP объединяет массивы только с не дублированными значениями

50

Мне нужно объединить два массива в один массив, но мне нужно удалить, прежде чем общие данные, которые они имеют вместе (дублированные значения, я имею в виду), мне нужны только уникальные значения при объединении.

Как я могу это сделать?

Это пример массива:

Первый массив

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" 
    } 
} 

Второй массив

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" 
    } 
} 

Ваш Ответ

3   ответа
125

array_merge() функция сarray_unique() функция (оба названия довольно понятны)

$array = array_unique (array_merge ($array1, $array2));
array_merge() не добавляет дубликаты ключей, но если у вас есть дублирующиеся значения с разными ключами, он добавляет те
чудо, мне просто нужно array_merge (), потому что у меня всегда один и тот же ключ во всех массивах, правда, спасибо! itsme
хорошо, как я вижу, array_merge (), кажется, не вычисляет дубликаты, поэтому array_unique () устарела в моем случае или нет! itsme
нота:array_unique сохраняет ключи, поэтому для числовых индексированных массивов, если вам нужны последовательные ключи, вы можете быстро переназначить их, заключив вызовarray_values
Следует добавить упоминание о SORT_REGULAR и других параметрах, чтобы избежать ошибок при преобразовании типов.
1

function concatArrays($arrays){
    $buf = [];
    foreach($arrays as $arr){
        foreach($arr as $v){
            $buf[$v] = true;
        }
    }
    return array_keys($buf);
}


$array = concatArrays([$array1, $array2]);
11

 $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
)
извините, я забыл, у меня есть многоуровневый массив не простой массив itsme

Похожие вопросы