PHP | Добавить массив в конец другого массива
Может немного громоздко, но все же: Проходим циклом по всем элементам нужного нам массива, и при помощи array_push добавляем каждый из этих элементов в указанный массив.
for($i = 0; $i
Отслеживать
ответ дан 2 дек 2016 в 11:39
Кирилл Авдеев Кирилл Авдеев
97 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков
Пожалуйста, постарайтесь писать более развернутые ответы. Уверен, автор вопроса был бы благодарен за ваш экспертный комментарий к приведенному выше коду.
5 дек 2016 в 4:47
- php
- массивы
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
array_merge
Сливает элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Результатом работы функции является новый массив.
Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.
В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.
Список параметров
Возвращаемые значения
Возвращает результирующий массив. Если вызывается без аргументов, возвращает пустой массив ( array ).
Список изменений
| Версия | Описание |
|---|---|
| 7.4.0 | Функция теперь может быть вызвана без каких-либо параметров. Ранее требовался хотя бы один параметр. |
Примеры
Пример #1 Пример использования array_merge()
$array1 = array( «color» => «red» , 2 , 4 );
$array2 = array( «a» , «b» , «color» => «green» , «shape» => «trapezoid» , 4 );
$result = array_merge ( $array1 , $array2 );
print_r ( $result );
?>?php
Результат выполнения данного примера:
Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4 )
Пример #2 Простой пример использования array_merge()
$array1 = array();
$array2 = array( 1 => «data» );
$result = array_merge ( $array1 , $array2 );
?>?php
Помните, что числовые ключи будут перенумерованы!
Array ( [0] => data )
Если вы хотите дополнить первый массив элементами второго без перезаписи элементов первого массива и без переиндексации, используйте оператор объединения массивов + :
$array1 = array( 0 => ‘zero_a’ , 2 => ‘two_a’ , 3 => ‘three_a’ );
$array2 = array( 1 => ‘one_b’ , 3 => ‘three_b’ , 4 => ‘four_b’ );
$result = $array1 + $array2 ;
var_dump ( $result );
?>?php
Ключи из первого массива будут сохранены. Если ключ массива существует в обоих массивах, то будет использован элемент из первого массива, а соответствующий элемент из второго массива будет проигнорирован.
array(5) < [0]=>string(6) "zero_a" [2]=> string(5) "two_a" [3]=> string(7) "three_a" [1]=> string(5) "one_b" [4]=> string(6) "four_b" >
Пример #3 Пример использования array_merge() с не массивами
$beginning = ‘foo’ ;
$end = array( 1 => ‘bar’ );
$result = array_merge ((array) $beginning , (array) $end );
print_r ( $result );
?>?php
Результат выполнения данного примера:
Array ( [0] => foo [1] => bar )
Смотрите также
- array_merge_recursive() — Рекурсивное слияние одного или более массивов
- array_replace() — Заменяет элементы массива элементами других переданных массивов
- array_combine() — Создаёт новый массив, используя один массив в качестве ключей, а другой для его значений
- Операторы, работающие с массивами
User Contributed Notes 8 notes
14 years ago
In some situations, the union operator ( + ) might be more useful to you than array_merge. The array_merge function does not preserve numeric key values. If you need to preserve the numeric keys, then using + will do that.
$array1 [ 0 ] = «zero» ;
$array1 [ 1 ] = «one» ;
$array2 [ 1 ] = «one» ;
$array2 [ 2 ] = «two» ;
$array2 [ 3 ] = «three» ;
$array3 = $array1 + $array2 ;
//This will result in::
$array3 = array( 0 => «zero» , 1 => «one» , 2 => «two» , 3 => «three» );
?>
Note the implicit «array_unique» that gets applied as well. In some situations where your numeric keys matter, this behaviour could be useful, and better than array_merge.
1 year ago
I wished to point out that while other comments state that the spread operator should be faster than array_merge, I have actually found the opposite to be true for normal arrays. This is the case in both PHP 7.4 as well as PHP 8.0. The difference should be negligible for most applications, but I wanted to point this out for accuracy.
Below is the code used to test, along with the results:
$before = microtime ( true );
for ( $i = 0 ; $i < 10000000 ; $i ++) $array1 = [ 'apple' , 'orange' , 'banana' ];
$array2 = [ ‘carrot’ , ‘lettuce’ , ‘broccoli’ ];
$array1 = [. $array1 . $array2 ];
>
$after = microtime ( true );
echo ( $after — $before ) . » sec for spread\n» ;
$before = microtime ( true );
for ( $i = 0 ; $i < 10000000 ; $i ++) $array1 = [ 'apple' , 'orange' , 'banana' ];
$array2 = [ ‘carrot’ , ‘lettuce’ , ‘broccoli’ ];
$array1 = array_merge ( $array1 , $array2 );
>
$after = microtime ( true );
echo ( $after — $before ) . » sec for array_merge\n» ;
?>
PHP 7.4:
1.2135608196259 sec for spread
1.1402177810669 sec for array_merge
PHP 8.0:
1.1952061653137 sec for spread
1.099925994873 sec for array_merge
1 year ago
In addition to the text and Julian Egelstaffs comment regarding to keep the keys preserved with the + operator:
When they say «input arrays with numeric keys will be renumbered» they MEAN it. If you think you are smart and put your numbered keys into strings, this won’t help. Strings which contain an integer will also be renumbered! I fell into this trap while merging two arrays with book ISBNs as keys. So let’s have this example:
$test1 [ ’24’ ] = ‘Mary’ ;
$test1 [ ’17’ ] = ‘John’ ;
$test2 [ ’67’ ] = ‘Phil’ ;
$test2 [ ’33’ ] = ‘Brandon’ ;
$result1 = array_merge ( $test1 , $test2 );
var_dump ( $result1 );
$result2 = [. $test1 , . $test2 ]; // mentioned by fsb
var_dump ( $result2 );
?>
You will get both:
Use the + operator or array_replace, this will preserve — somewhat — the keys:
$result1 = array_replace ( $test1 , $test2 );
var_dump ( $result1 );
$result2 = $test1 + $test2 ;
var_dump ( $result2 );
?>
You will get both:
The keys will keep the same, the order will keep the same, but with a little caveat: The keys will be converted to integers.
3 years ago
We no longer need array_merge() as of PHP 7.4.
does the same as
and can be faster too.
1 year ago
Not to contradict ChrisM’s test, but I ran their code example and I got very different results for PHP 8.0.
Testing PHP 8.0.14
1.4955070018768 sec for spread
4.4120140075684 sec for array_merge
7 months ago
Using the spread operator with array_merge allows merging any number of arrays together in one operation:
array_merge (. $array_of_arrays );
?>
Perhaps $array_of_arrays was built up in a loop, with $array_of_arrays[] = $another_array inside the loop. Collecting the arrays together this way and then merging them all at once is many times faster than repeatedly merging arrays two at a time (doing array_merge inside the loop).
4 months ago
If you’re trying to merge an array with something that evaluates to NULL, you’ll get unpredictable results:
var_dump ( $a );
var_dump ( $b );
$c = array_merge ( $a , $b ); // this won’t work
echo «The merged array is:» ;
var_dump ( $c );
?>
Depending on your error setting, you might not even get anything at all.
array(3) [0]=>
string(1) «1»
[1]=>
string(1) «2»
[2]=>
string(1) «4»
>
NULL
PHP Warning: array_merge(): Expected parameter 2 to be an array, null given in /home/gwyneth/stupid-test.php on line 8
The merged array is: NULL
array(3) [0]=>
string(1) «1»
[1]=>
string(1) «2»
[2]=>
string(1) «4»
>
NULL
PHP Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of type array, null given in /home/gwyneth/stupid-test.php:8
Stack trace:
#0 /home/gwyneth/stupid-test.php(8): array_merge()
#1
thrown in /home/gwyneth/stupid-test.php on line 8
Depending on your display/debug settings, you might not even get anything.
The solution, of course, is to do a quick & dirty test before passing the 2nd argument:
var_dump ( $a );
var_dump ( $b );
$c = array_merge ( $a , $b ?? []);
echo «The merged array is:» ;
var_dump ( $c );
?>
Which gives the expected result (PHP 7.4 to PHP 8.2):
While it’s perfectly legitimate to merge empty arrays, null is *not* an empty array!
Вложенные массивы — PHP: Массивы
Значением массива может быть всё, что угодно, в том числе массив. В этом случае синтаксис может выглядеть немного необычно, поэтому разберём его отдельным уроком. Создать массив в массиве можно так:
$numbers = [[3]]; count($numbers); // 1 $numbers = [1, [3, 2], [3, [4]]]; count($numbers); // 3
Каждый элемент, являющийся массивом, рассматривается как единое целое, что видно по размеру второго массива. Вложенность никак не ограничивается. Можно создавать массив массивов массивов и т. д.
Обращение ко вложенным массивам выглядит уже немного необычно, хотя и логично:
$numbers = [[3]]; $numbers[0][0]; // 3 $numbers = [1, [3, 2], [3, [4]]]; $numbers[2][1][0]; // 4
Возможно, с непривычки вы не всегда сразу точно увидите, как добраться до нужного элемента, но это всего лишь вопрос тренировок.
Изменение и добавление массивов в массив:
$numbers = [[3]]; $numbers[0] = [2, 10]; $numbers[] = [3, 4, 5]; // [[2, 10], [3, 4, 5]]
Вложенные массивы можно изменять напрямую, просто обратившись к нужному элементу:
$numbers = [[3]]; $numbers[0][0] = 5; // [[5]]
То же самое касается и добавления нового элемента:
$numbers = [[3]]; $numbers[0][] = 10; // [[3, 10]]
Для чего вообще могут понадобиться вложенные массивы? Таких примеров довольно много, начиная от математических концепций, например, матриц, заканчивая представлением игровых полей. Помните игру крестики-нолики? Это как раз тот самый случай.
Разберём для примера такую задачку. Дано игровое поле для крестиков-ноликов. Нужно написать функцию, которая проверяет, есть ли на этом поле хотя бы один крестик или нолик, в зависимости от того, что попросят проверить.
// Инициализируем поле // array_fill создаёт массив https://php.net/manual/ru/function.array-fill.php $field = [ array_fill(0, 3, null), array_fill(0, 3, null), array_fill(0, 3, null), ]; // Код выше создаёт массив следующей структуры: // [ // [null, null, null], // [null, null, null], // [null, null, null] // ] // Делаем ход: $field[1][2] = 'x'; // [ // [null, null, null], // [null, null, 'x'], // [null, null, null] // ]
Теперь реализуем функцию, которая выполняет проверку:
function check($field, $symbol) // Обходим поле. Каждый элемент это строчка в игровом поле. foreach ($field as $row) // in_array - проверяет присутствует ли элемент в массиве // Если присутствует, значит мы нашли то, что искали if (in_array($symbol, $row)) return true; > > // Если поле было просмотрено, но ничего не нашли, значит ходов не было return false; >
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Создание массивов в PHP
Массив — это обычная переменная PHP. Массивы предназначены для сохранения группы элементов в переменной. Каждый элемент массива имеет ключ и значение. Значение может представлять собой другую переменную или массив. Массивы бывают обыкновенные и ассоциативные(иногда говорят «хеш»- массив). Отличаются они только тем, что в обыкновенных массивах ключами служат целые числа (индекс начинается с 0), а в ассоциативных — сочетания различных знаков (т.е. строка).
В массиве с числовой индексацией порядок элементов продиктован его ключами и строго соблюдается, ассоциативный массив часто не гарантирует упорядочение ключей. Элементы добавляются в определенном порядке, но позже этот порядок никоим образом определить нельзя.
PHP умеет сортировать массивы только с уникальными индексами. Если в массиве есть повторяющиеся индексы та же функция ksort отбросит дубликаты и массив на выходе получится меньше.

В PHP можно создавать массивы используя функцию array() или специальный оператор [].
Оператор [] означает «добавить в массив». При помощи этого оператора можно как создавать массивы, та и добавлять значения в конец существующего массива. Функция array(), как правило, используется для записи в массив нескольких значений, помещающихся в одной строке. Оператор [] позволяет заносить значения в массив, когда это нужно.
Создание одномерного массива с целочисленными индексами. Самый простой способ создания одномерного массива с целочисленными индексами.
Вывод скрипта с использованием функций print_r, var_dump, var_export:
print_r: Array ( [0] => aaa [1] => bbb [2] => zzz ) var_dump: array(3) < [0]=>string(3) "aaa" [1]=> string(3) "bbb" [2]=> string(3) "zzz" > var_export: array ( 0 => 'aaa', 1 => 'bbb', 2 => 'zzz', )
Создание одномерного ассоциативного массива. Используется сивол «⇒»
$fruits = array('red' => 'Apples', 'yellow' => 'Bananas', 'beige' => 'Cantaloupes', 'brown' => 'Dates');
Многомерные массивы. Двумерный массив — это массив, каждый элемент которого представляет собой переменную — массив, а каждый элемент дочерних массивов представляет собой стандартную переменную. Такая конструкция позволяет хранить массивы внутри других массивов, а также массивы в массивах массивов и т.д.
Создание многомерного массива.
$fruits = array('red' => array('strawberry','apple'), 'yellow' => array('banana'));
Удаление нежелательных ключей в массиве
1, "B"=>2, "C"=>"a"); foreach($a as $key=>&$value) < if(is_string($value))< unset($a[$key]); >> print_r($a); ?>
unset($arr[5]); // Это удаляет элемент из массива unset($arr); // Это удаляет массив полностью
Сортировка массивов
uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей. mod_status — скрипт сортирующей по IP клиента
sort. Сортировка массивов. Функция sort располагает элементы массива в порядке возрастания. Рассмотрим пример различия сортировки одного и того же массива для числового порядка (SORT_NUMERIC) и строковом представлении (SORT_STRING):
Array ( [0] => 1 [1] => 2 [2] => 10 [3] => 17 [4] => 18 [5] => 20 ) Array ( [0] => 1 [1] => 10 [2] => 17 [3] => 18 [4] => 2 [5] => 20 )
Функция sort не сохраняет связи ключ/значение между элементами; вместо этого она реиндексирует элементы, начиная с 0 по возрастанию. arsort сортирует массив в обратном порядке, сохраняя ключи
Поиск в многомерном массиве
Поиск в многомерном массиве, по третьему ключу каждого вложенного массива. Например, найти ‘foo’:
$mass=array(array('0','0','bad'),array('0','0','foo')); for($n=0;$n!=sizeof($mass);$n++){ if($mass[$n][2]=='foo'){ echo '$mass['.$n.'][2]=foo
'; } } ?>
$mass=array(array('0','0','bad'),array('0','0','foo'),array('0','0','foo')); foreach($mass as $d){ if(in_array('foo',$d)){ echo 's'; } }
PHP проверка есть ли значение в массиве при помощи функции in_array
Проверить, присутствует ли в массиве значение.
bool in_array ( mixed needle, array haystack [, bool strict] )
Ищет в haystack значение needle и возвращает TRUE в случае удачи, FALSE в противном случае.
Если третий параметр strict установлен в TRUE тогда функция in_array() также проверит соответствие types параметра needle и соответствующего значения массива haystack.
Если needle — строка, сравнение будет регистрозависимым.
$utmkey_get=array("sport", "bola","esporte"); $api_reqest->link='https://wiki.dieg.info/robots'; $utmkey=$_GET['utm_term']; if (in_array($utmkey, $utmkey_get)) { echo $api_reqest->link; } else{ require_once('p2.php'); }?>

11 Самых Популярных Статей
- ulimit (limits.conf) управление ограничениями ресурсов ОС Linux
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Что такое страны tier 1,2,3 и как правильно выбрать ГЕО для рекламной кампании
- Настройка, использование GitLab CI/CD
- Что означает «> /dev/null 2>&1» или перенаправление STDIN, STDOUT и STDERR?
- Настройка и использование сервера OpenVPN в Linux
- PostgreSQL: создать БД, пользователя, таблицу, установить права
- Виды кодировок символов
- Использование rsync в примерах
- my.cnf примеры конфигурации MySQL, MariaDB
- dig проверка DNS сервера
11 Самых Популярных Обзоров
- ТОП 4 лучших антидетект браузеров в 2023 (Бесплатные & Платные)
- Обзор и отзывы о Namecheap в 2023 году
- Хостинг Zomro (Зомро)
- Обзор браузера Dolphin
- ТОП 3 Проверенных VPN, Прокси, Хостинг VPS Турция в 2023
- Что такое абузоустойчивый хостинг (bulletproof)?
- Обзор и отзывы о 4VPS (FourServer) в 2023 году
- Обзор и отзывы AstroProxy в 2023 году
- Обзор и отзывы о PQ Hosting в 2023 году
- Обзор и отзывы о Hostinger в 2023 году: преимущества и недостатки
- Проверенные VPS / VDS хостинг провайдеры
