Array_merge
Glossary overview

Array_merge

Функция array_merge() объединяет два или более массивов в один.

Синтаксис:

  • Принимает несколько массивов.
  • Объединяет их в один.
  • Если есть одинаковые ключи в индексном массиве – они переупорядочиваются.
  • Если есть одинаковые ключи в ассоциативном массиве – последние значения заменяют предыдущие.

Примеры использования:

1. Объединение индексных массивов

$array1 = [1, 2, 3];
$array2 = [4, 5, 6];

$result = array_merge($array1, $array2);
print_r($result);

// Вывод
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

📌 Ключи переиндексируются!

2. Объединение ассоциативных массивов

$array1 = ["name" => "Alice", "age" => 25];
$array2 = ["city" => "New York", "age" => 30];

$result = array_merge($array1, $array2);
print_r($result);

// Вывод
Array ( [name] => Alice [age] => 30 [city] => New York )

📌 Значение ключа "age" заменилось на 30 (из второго массива).

3. Объединение индексных и ассоциативных массивов

$array1 = [1, 2, "key" => "value1"];
$array2 = [3, 4, "key" => "value2"];

$result = array_merge($array1, $array2);
print_r($result);

// Вывод
Array ( [0] => 1 [1] => 2 [key] => value2 [2] => 3 [3] => 4 )

📌 Ключ "key" перезаписался, а индексные элементы просто добавились.

4. Использование array_merge() с пустым массивом

$array1 = ["name" => "Alice"];
$array2 = [];

$result = array_merge($array1, $array2);
print_r($result);

// Вывод
Array ( [name] => Alice )

📌 Если один массив пустой, array_merge() просто вернёт другой массив.

5. Объединение с array_values() для сброса ключей

$array1 = ["a" => "apple", "b" => "banana"];
$array2 = ["c" => "cherry", "d" => "date"];

$result = array_values(array_merge($array1, $array2));
print_r($result);

// Вывод
Array ( [0] => apple [1] => banana [2] => cherry [3] => date )

📌 Теперь массив стал индексным (ключи сброшены).

Мой пример

Объединяет $default_args с новым массивом, который добавляет tax_query.

Если в $default_args уже был tax_query, он будет перезаписан.

 $default_args = array(
            'post_type'      => array( 'post', 'page', 'projects', 'events', 'case-studies', 'directors' ),
            'post_status'    => 'publish',
            'posts_per_page' => -1,
            's'              => $s,
            'fields'         => 'all'
        );

        $args_title_ncris = array_merge( $default_args, array(
            'tax_query' => array(
                array(
                    'taxonomy' => 'ncris-provider',
                    'field'    => 'slug',
                    'terms'    => 'ncris-providers-term',
                ),
            ),
        ) );
        $query_title_ncris = new WP_Query( $args_title_ncris );

🚀 Альтернативы array_merge()

Объединение без перезаписи ключей: array_merge_recursive()

$array1 = ["name" => "Alice", "hobbies" => ["reading"]];
$array2 = ["hobbies" => ["gaming", "traveling"]];

$result = array_merge_recursive($array1, $array2);
print_r($result);

// Вывод
Array ( [name] => Alice [hobbies] => Array ( [0] => reading [1] => gaming [2] => traveling ) )

📌 Значения с одинаковыми ключами объединяются в массив.

Объединение с сохранением первых значений: + (оператор массива)

$array1 = ["name" => "Alice", "age" => 25];
$array2 = ["name" => "Bob", "city" => "New York"];

$result = $array1 + $array2;
print_r($result);

// Вывод
Array ( [name] => Alice [age] => 25 [city] => New York )

📌 + сохраняет первые значения, а не перезаписывает их.

📌 Итоги

array_merge() объединяет массивы, но перезаписывает одинаковые ключи.
✅ Используется как для индексных, так и для ассоциативных массивов.
✅ Для сохранения всех значений используйте array_merge_recursive().
✅ Если хотите оставить первые значения, используйте +.