Функция 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().
✅ Если хотите оставить первые значения, используйте +.
