php прибавить массив к массиву
Как в php добавить к массиву другой массив?
Для преобразования массивов в php есть множество функций и операторов: Сборник функций для работы с массивами
Есть несколько способов, чтобы добавить массив в массив при помощи php и все они могут пригодиться для отдельных случаев.
«Оператор +»
Это простой, но коварный способ:
А теперь более подробный пример, чтобы проиллюстрировать это:
Функция array_merge()
Использовать эту функцию можно следующим образом:
Она сбрасывает числовые индексы и заменяет строковые. Отлично подходит для того, чтобы склеить два или несколько массивов с числовыми индексами:
Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.
Функция array_merge_recursive
Делает то же самое, что и array_merge только еще и рекурсивно проходит по каждой ветке массива и проделывает то же самое с потомками. Подробная справка по array_merge_recursive
Функция array_replace()
Заменяет элементы массива элементами других переданных массивов. Подробная справка по array_replace.
Функция array_replace_recursive()
То же что и array_replace только обрабатывает все ветки массива. Справка по array_replace_recursive.
array_push
(PHP 4, PHP 5, PHP 7, PHP 8)
array_push — Добавляет один или несколько элементов в конец массива
Описание
Список параметров
Возвращаемые значения
Возвращает новое количество элементов в массиве.
Список изменений
Версия | Описание |
---|---|
7.3.0 | Теперь эта функция может быть вызвана с одним параметром. Ранее требовалось минимум два параметра. |
Примеры
Пример #1 Пример использования array_push()
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 35 notes
If you’re going to use array_push() to insert a «$key» => «$value» pair into an array, it can be done using the following:
It is not necessary to use array_push.
Hope this helps someone.
Rodrigo de Aquino asserted that instead of using array_push to append to an associative array you can instead just do.
. but this is actually not true. Unlike array_push and even.
. Rodrigo’s suggestion is NOT guaranteed to append the new element to the END of the array. For instance.
$data[‘one’] = 1;
$data[‘two’] = 2;
$data[‘three’] = 3;
$data[‘four’] = 4;
. might very well result in an array that looks like this.
[ «four» => 4, «one» => 1, «three» => 3, «two» => 2 ]
I can only assume that PHP sorts the array as elements are added to make it easier for it to find a specified element by its key later. In many cases it won’t matter if the array is not stored internally in the same order you added the elements, but if, for instance, you execute a foreach on the array later, the elements may not be processed in the order you need them to be.
If you want to add elements to the END of an associative array you should use the unary array union operator (+=) instead.
$data[‘one’] = 1;
$data += [ «two» => 2 ];
$data += [ «three» => 3 ];
$data += [ «four» => 4 ];
You can also, of course, append more than one element at once.
$data[‘one’] = 1;
$data += [ «two» => 2, «three» => 3 ];
$data += [ «four» => 4 ];
. which will result in an array that looks like this.
[ «element1» => 1, «element2» => 2, «element3» => 3, «element4» => 4 ]
This is how I add all the elements from one array to another:
If you’re adding multiple values to an array in a loop, it’s faster to use array_push than repeated [] = statements that I see all the time:
$ php5 arraypush.php
X-Powered-By: PHP/5.2.5
Content-type: text/html
Adding 100k elements to array with []
Adding 100k elements to array with array_push
Adding 100k elements to array with [] 10 per iteration
Adding 100k elements to array with array_push 10 per iteration
?>
The above will output this:
Array (
[0] => a
[1] => b
[2] => c
[3] => Array (
[0] => a
[1] => b
[2] => c
)
)
There is a mistake in the note by egingell at sisna dot com 12 years ago. The tow dimensional array will output «d,e,f», not «a,b,c».
Need a real one-liner for adding an element onto a new array name?
Skylifter notes on 20-Jan-2004 that the [] empty bracket notation does not return the array count as array_push does. There’s another difference between array_push and the recommended empty bracket notation.
Empy bracket doesn’t check if a variable is an array first as array_push does. If array_push finds that a variable isn’t an array it prints a Warning message if E_ALL error reporting is on.
So array_push is safer than [], until further this is changed by the PHP developers.
If you want to preserve the keys in the array, use the following:
elegant php array combinations algorithm
A common operation when pushing a value onto a stack is to address the value at the top of the stack.
This can be done easily using the ‘end’ function:
A function which mimics push() from perl, perl lets you push an array to an array: push(@array, @array2, @array3). This function mimics that behaviour.
Add elements to an array before or after a specific index or key:
Как добавить элементы в массив в PHP?
На самом деле, операция присваивания значений элементу массива (array) в PHP происходит так же, как и присваивание значений переменной. Но есть небольшая разница: квадратные скобки ([]), добавляемые после имени переменной массива, в данном случае не понадобятся (в таких скобках обычно указывают индекс/ключ элемента). Если же индекс/ключ указаны не будут, PHP выберет наименьший незанятый числовой индекс, сделав это автоматически:
Таким образом, чтобы добавить элемент путём изменения определенного значения, следует просто присвоить новое значение элементу, который уже существует. А чтобы удалить какой-нибудь элемент PHP-массива с его ключом либо удалить сам массив полностью, применяется функция unset():
Тут нужно отметить, что если элемент добавляется в наш массив без ключа, язык программирования PHP автоматически станет использовать предыдущее самое большое значение ключа типа integer, увеличенное на 1. Когда целочисленные индексы в PHP-массиве отсутствуют, ключом становится 0.
Также учтите, что самое большее целое значение ключа совсем необязательно существует в нашем массиве в данный момент, что бывает при удалении элементов массива. А после удаления элементов переиндексация массива array не происходит. На словах всё достаточно сложно, лучше рассмотреть пример:
В вышеописанном примере используются следующие функции: — array_values() — обеспечивает возвращение индексированного массива, заново индексируя возвращаемый массив числовыми индексами; — print_r() — работает как var_dump, однако осуществляет вывод массивов в более удобочитаемом виде.
Как добавить элементы в конец PHP массива?
Рассмотрим параметры работы:
array Наш входной массив. value1 1-е значение, добавляемое в конец нашего массива array.
Что касается возвращаемых значений, то будет возвращено новое количество элементов в массиве.
Рассмотрим использование array_push() на примере:
Как видите, ничего сложного. Если же интересует более сложная практика, её вы найдёте на нашем курсе по PHP-разработке:
Массивы в PHP
Что такое массив
Например, так можно объявить массив с тремя значениями:
Массивы также отлично подходят для объединения нескольких связанных между собой значений, например характеристик товара:
Создание массива
Для создания пустого массива просто укажите квадратные скобки вместо значения:
Результат в браузере:
PHP сообщает нам, что в переменной лежит массив (англ. array), в котором находится 0 значений.
Чтобы объявить массив с данными, просто перечислите значения в квадратных скобках:
Создание массивов с помощью квадратных скобок работает начиная с версии PHP 5.4. До этого использовался более громоздкий синтаксис:
Ключи и значения массива
Массив состоит из ключей (индексов) и соответствующих им значений. Это можно представить как таблицу:
Ключ | Значение |
---|---|
0 | Samsung |
1 | Apple |
2 | Nokia |
У каждого значения есть свой ключ. В массиве не может быть несколько одинаковых ключей.
Вернёмся к предыдущему примеру и посмотрим, что лежит в массиве:
Результат в браузере:
Когда мы создаём массив без указания ключей, PHP генерирует их автоматически в виде чисел, начиная с 0.
Указание ключей происходит с помощью конструкции => :
Простые и ассоциативные массивы
Когда мы создаём массив с числовыми ключами, такой массив называется простым или числовым.
Вывод массива
Вывод элементов массива выглядит следующим образом:
Однако обе функции выводят информацию на одной строке, что в случае с массивами превращается в кашу. Чтобы этого не происходило, используйте тег ‘;
Результат в браузере:
Также вывести содержимое массива можно с помощью цикла foreach:
Подробней работу цикла foreach мы разберём в отдельном уроке.
Добавление и удаление элементов
Добавление новых элементов в массив выглядит следующим образом:
Но если название ключа не играет роли, его можно опустить:
Удалить элемент массива можно с помощью функции unset() :
Двумерные и многомерные массивы
В качестве значения массива мы можем передать ещё один массив:
Обратиться к элементу многомерного массива можно так:
Теперь мы можем хранить в одном массиве целую базу товаров:
Или альтернативный вариант:
Задача 1
Задача 2
2. Создайте подмассив streets с любыми случайными улицами. Каждая улица должна иметь имя (name) и количество домов (buildings_count), а также подмассив из номеров домов (old_buildings), подлежащих сносу.
Функции для работы с массивами
Содержание
User Contributed Notes 14 notes
A simple trick that can help you to guess what diff/intersect or sort function does by name.
Example: array_diff_assoc, array_intersect_assoc.
Example: array_diff_key, array_intersect_key.
Example: array_diff, array_intersect.
Example: array_udiff_uassoc, array_uintersect_assoc.
This also works with array sort functions:
Example: arsort, asort.
Example: uksort, ksort.
Example: rsort, krsort.
Example: usort, uasort.
?>
Return:
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Cuatro [ 4 ] => Cinco [ 5 ] => Tres [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Tres [ 4 ] => Cuatro [ 5 ] => Cinco [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
?>
Updated code of ‘indioeuropeo’ with option to input string-based keys.
Here is a function to find out the maximum depth of a multidimensional array.
// return depth of given array
// if Array is a string ArrayDepth() will return 0
// usage: int ArrayDepth(array Array)
Short function for making a recursive array copy while cloning objects on the way.
If you need to flattern two-dismensional array with single values assoc subarrays, you could use this function:
to 2g4wx3:
i think better way for this is using JSON, if you have such module in your PHP. See json.org.
to convert JS array to JSON string: arr.toJSONString();
to convert JSON string to PHP array: json_decode($jsonString);
You can also stringify objects, numbers, etc.
Function to pretty print arrays and objects. Detects object recursion and allows setting a maximum depth. Based on arraytostring and u_print_r from the print_r function notes. Should be called like so:
I was looking for an array aggregation function here and ended up writing this one.
Note: This implementation assumes that none of the fields you’re aggregating on contain The ‘@’ symbol.
While PHP has well over three-score array functions, array_rotate is strangely missing as of PHP 5.3. Searching online offered several solutions, but the ones I found have defects such as inefficiently looping through the array or ignoring keys.