PHP. Сложение массивов


Сложение индексированных и ассоциативных массивов на языке PHP.

Сложить массивы можно несколькими способами.

Одним из основных способов сложения массивов является использование оператора "+".
В данном виде сложения массивов есть своеобразный недостаток.
Если ключ из массива $array2 отсутствует в массиве $array1, то в результирующий массив добавится элемент с этим ключом.
Если в массиве $array1 уже есть элемент с таким ключом, то его значение останется без изменений.

Пример:
$array1 = ['Белый', 'Синий', 'Красный'];
$array2 = ['Желтый', 'Зеленый', 'Фиолетовый'];
print_r($array1 + $array2);

Результат:
Array
(
    [0] => Белый
    [1] => Синий
    [2] => Красный
)


Следующий вариант сложения массивов это использование функции array_merge().

Данная функция сливает элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Результатом работы функции является новый массив. Стоит заметить, что если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.

Пример:
$array1 = ['Белый', 'Синий', 'Красный'];
$array2 = ['Желтый', 'Зеленый', 'Фиолетовый'];
$array11 = [
    'one' => 'Белый',
    'two' => 'Синий',
    'three' => 'Красный'
];

$array22 = [
    'one' => 'Желтый',
    'two' => 'Зеленый',
    'three' => 'Фиолетовый'
];
print_r(array_merge($array1, $array2));
print_r(array_merge($array11, $array22));

Результат:
Array
(
    [0] => Белый
    [1] => Синий
    [2] => Красный
    [3] => Желтый
    [4] => Зеленый
    [5] => Фиолетовый
)
Array
(
    [one] => Желтый
    [two] => Зеленый
    [three] => Фиолетовый
)


Еще один из способов, это использование функции array_merge_recursive () - рекурсивное слияние массивов.
Данная функция сливает элементы массивов таким образом, что значения одного массива добавляются в конец предыдущего (аналогично функции array_merge()).

Если входные массивы имеют одинаковые строковые ключи, то значения этих ключей сливаются в массив, и это делается рекурсивно, так что если одно из значений является массивом, то функция сливает его с соответствующим значением в другом массиве. Однако, если массивы имеют одинаковые числовые ключи, каждое последующее значение не заменит исходное значение, а будет добавлено в конец массива.

Пример:
$array1 = ['Белый', 'Синий', 'Красный'];
$array2 = ['Желтый', 'Зеленый', 'Фиолетовый'];

$array11 = [
    'one' => 'Белый',
    'two' => 'Синий',
    'three' => 'Красный'
];

$array22 = [
    'one' => 'Желтый',
    'two' => 'Зеленый',
    'three' => 'Фиолетовый'
];

$array111 = [
    'one' => 'Белый',
    'two' => 'Синий',
    'three' => 'Красный'
];

$array222 = [
    'one2' => 'Желтый',
    'two2' => 'Зеленый',
    'three2' => 'Фиолетовый'
];

print_r(array_merge_recursive ($array1, $array2));
print_r(array_merge_recursive ($array11, $array22));
print_r(array_merge_recursive ($array111, $array222));


Результат:
Array
(
    [0] => Белый
    [1] => Синий
    [2] => Красный
    [3] => Желтый
    [4] => Зеленый
    [5] => Фиолетовый
)
Array
(
    [one] => Array
        (
            [0] => Белый
            [1] => Желтый
        )

    [two] => Array
        (
            [0] => Синий
            [1] => Зеленый
        )

    [three] => Array
        (
            [0] => Красный
            [1] => Фиолетовый
        )

)
Array
(
    [one] => Белый
    [two] => Синий
    [three] => Красный
    [one2] => Желтый
    [two2] => Зеленый
    [three2] => Фиолетовый
)


В данной статье я разобрал основные, наиболее популярные варианты сложения массивов.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.