Эффективные способы объединения двух массивов в один без повторения в PHP

Объединение двух массивов в один без повторения — распространенная задача в PHP. В этой статье блога мы рассмотрим несколько методов достижения этой цели, а также примеры кода. К концу этой статьи вы получите четкое представление о различных подходах к объединению массивов и созданию нового массива без повторяющихся значений.

Метод 1: использование функций array_merge и array_unique
Самый простой способ объединить два массива без повторения — использовать функции array_merge и array_unique в PHP. Вот пример:

$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$mergedArray = array_unique(array_merge($array1, $array2));
print_r($mergedArray);

Выход:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [6] => 5
    [7] => 6
)

Метод 2: использование оператора объединения и функции array_values
Другой подход — использовать оператор объединения (+) для объединения массивов, а затем использовать функцию array_values ​​для повторной индексации полученного результата. множество. Вот пример:

$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$mergedArray = array_values($array1 + $array2);
print_r($mergedArray);

Выход:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

Метод 3: использование функций array_diff и array_merge
Этот метод предполагает использование функции array_diff для поиска уникальных значений из обоих массивов, а затем их объединение с помощью функции array_merge. Вот пример:

$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$uniqueValues = array_merge(
    array_diff($array1, $array2),
    array_diff($array2, $array1)
);
print_r($uniqueValues);

Выход:

Array
(
    [0] => 1
    [1] => 2
    [2] => 5
    [3] => 6
)

Метод 4: использование цикла и функции in_array
В этом методе мы перебираем оба массива и используем функцию in_array, чтобы проверить, существует ли уже значение в объединенном массиве. Если нет, мы добавляем его в объединенный массив. Вот пример:

$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$mergedArray = $array1;
foreach ($array2 as $value) {
    if (!in_array($value, $mergedArray)) {
        $mergedArray[] = $value;
    }
}
print_r($mergedArray);

Выход:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)