Как добавить в массив элемент php
Перейти к содержимому

Как добавить в массив элемент php

  • автор:

Работа с массивами PHP – создание, наполнение, удаление

Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.

Создание массивов

Создать массив и заполнить его значениями

Можно применить функцию array_fill($start, $size, $value) , которая создаст массив с количеством $size элементов со значением $value , начиная с индекса $start .

Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.

Результат:

Еще вариант – функция explode($delimiter, $string) , которая из строки $string создаст массив используя разделитель $delimiter , в данном примере запятая.

Результат:

Узнать количество элементов в массиве

Если массив ассоциативный (многомерный), то count() вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE .

Добавление элементов в массив

Добавить значение в начало массива

array_unshift($array, $value) – добавляет одно или несколько элементов в начало массива.

Результат:

Добавить значение в конец массива

array_push($array, $value) – добавляет значение в конец массива.

Результат:

Работа с ключами массива

Поучить первый ключ массива

Функция array_key_first($array) — получает первый ключ массива. Появилась в версии PHP 7.3, для более ранних версий:

Поучить последний ключ массива

Функция array_key_last($array) — получает последний ключ массива. Появилась в версии PHP 7.3, для более ранних версий:

Как добавить элементы в массив в PHP?

На самом деле, операция присваивания значений элементу массива (array) в PHP происходит так же, как и присваивание значений переменной. Но есть небольшая разница: квадратные скобки ([]), добавляемые после имени переменной массива, в данном случае не понадобятся (в таких скобках обычно указывают индекс/ключ элемента). Если же индекс/ключ указаны не будут, PHP выберет наименьший незанятый числовой индекс, сделав это автоматически:

Таким образом, чтобы добавить элемент путём изменения определенного значения, следует просто присвоить новое значение элементу, который уже существует. А чтобы удалить какой-нибудь элемент PHP-массива с его ключом либо удалить сам массив полностью, применяется функция unset():

Тут нужно отметить, что если элемент добавляется в наш массив без ключа, язык программирования PHP автоматически станет использовать предыдущее самое большое значение ключа типа integer, увеличенное на 1. Когда целочисленные индексы в PHP-массиве отсутствуют, ключом становится 0.

Также учтите, что самое большее целое значение ключа совсем необязательно существует в нашем массиве в данный момент, что бывает при удалении элементов массива. А после удаления элементов переиндексация массива array не происходит. На словах всё достаточно сложно, лучше рассмотреть пример:

В вышеописанном примере используются следующие функции: — array_values() — обеспечивает возвращение индексированного массива, заново индексируя возвращаемый массив числовыми индексами; — print_r() — работает как var_dump, однако осуществляет вывод массивов в более удобочитаемом виде.

Как добавить элементы в конец PHP массива?

Добавление одного или нескольких элементов можно выполнить, используя array_push() : int array_push ( array &$array , mixed $value1 [, mixed $. ] ). В нашем случае array_push используется как стек, добавляя переданные значения в конец array-массива. В результате длина array увеличится на количество переданных значений. Схожего эффекта можно достичь и с помощью следующего выражения, повторённого для каждого переданного значения:

Кстати, если нужно добавить только один элемент в PHP-массив, лучше задействовать не array_push, а $array[] = — в этом случае у нас не будет затрат на вызов функции.

Рассмотрим параметры работы:

array Наш входной массив. value1 1-е значение, добавляемое в конец нашего массива array.

Что касается возвращаемых значений, то будет возвращено новое количество элементов в массиве.

Рассмотрим использование array_push() на примере:

В итоге получим:

Как видите, ничего сложного. Если же интересует более сложная практика, её вы найдёте на нашем курсе по PHP-разработке:

Массивы в PHP

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

В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа, а в качестве индексов выступают целые числа.

Создать массив

Пример создания массива

<?php $myArray = array (1,2,3,4)

Обратиться к элементу массива можно следующим образом

Пройтись по всему массиву

Чтобы вывести на экран все элементы массива можно написать функцию show_array()

Получить длину массива

<?php $my_array = array («one», «two», «three»); array_length = count($my_array); echo($array_length);

Обратиться к элементу по его индексу

<?php $my_array = array («one», «two», «three»); $indexed_array = array_values($my_array); echo$indexed_array[1];

Словари

С помощью array () можно создавать словари

Обратиться к элементу массива можно следующим образом

Обратиться к элементу массива можно следующим образом

Добавить элемент к массиву PHP

Допустим у нас есть массив из двух чисел, который можно посмотреть функцией show_array()

<?php $a = array (1, 2); show_array($a);

Добавить к нему ещё один элемент можно с помощью array_push()

array_push($a, 3) show_array($a);

Найти индекс элемента по значению

Если известно значение array_search() найдёт индекс первого элемента массива с таким значением

<?php $a = array («a», «b», «c»); echo(array_search(«c», $a));

Удалить элемент из массива

Функция unset() удаляет из массива элемент по его индексу

<?php $a = array («a», «b», «c»); show_array($a); unset ($a[1]); show_array($a);

Функцию show_array() мы написали заранее

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

array_push

array_push() использует array как стек и добавляет переданные значения в конец массива array . Длина array увеличивается на количество переданных значений. Имеет тот же эффект, что и выражение:

Замечание: Вместо использования array_push() для добавления одного элемента в массив, лучше использовать $array[] = , потому что в этом случае не происходит затрат на вызов функции.

Замечание: array_push() вызовет предупреждение, если первый аргумент не является массивом. Это отличается от поведения конструкции $var[] до PHP 7.1.0, в случае которой будет создан новый массив.

Список параметров

Значения, добавляемые в конец массива array .

Возвращаемые значения

Возвращает новое количество элементов в массиве.

Список изменений

Версия Описание
7.3.0 Теперь эта функция может быть вызвана с одним параметром. Ранее требовалось минимум два параметра.

Примеры

Пример #1 Пример использования array_push()

Результат выполнения данного примера:

Смотрите также

  • array_pop() — Извлекает последний элемент массива
  • array_shift() — Извлекает первый элемент массива
  • array_unshift() — Добавляет один или несколько элементов в начало массива

User Contributed Notes 36 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.

I’ve done a small comparison between array_push() and the $array[] method and the $array[] seems to be a lot faster.

<?php
$array = array();
for ( $x = 1 ; $x <= 100000 ; $x ++)
<
$array [] = $x ;
>
?>
takes 0.0622200965881 seconds

<?php
$array = array();
for ( $x = 1 ; $x <= 100000 ; $x ++)
<
array_push ( $array , $x );
>
?>
takes 1.63195490837 seconds

so if your not making use of the return value of array_push() its better to use the $array[] way.

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 ];

Note that like array_push (but unlike $array[] =) the array must exist before the unary union, which means that if you are building an array in a loop you need to declare an empty array first.

$data = [];
for ( $i = 1; $i < 5; $i++ ) <
$data += [ «element$i» => $i ];
>

. which will result in an array that looks like this.

[ «element1» => 1, «element2» => 2, «element3» => 3, «element4» => 4 ]

Unfortunately array_push returns the new number of items in the array
It does not give you the key of the item you just added, in numeric arrays you could do -1, you do however need to be sure that no associative key exists as that would break the assumption

It would have been better if array_push would have returned the key of the item just added like the below function
(perhaps a native variant would be a good idea. )

if(! function_exists ( ‘array_add’ )) <
function array_add (array & $array , $value /*[, $. ]*/ ) <
$values = func_get_args (); //get all values
$values [ 0 ]= & $array ; //REFERENCE!
$org = key ( $array ); //where are we?
call_user_func_array ( ‘array_push’ , $values );
end ( $array ); // move to the last item
$key = key ( $array ); //get the key of the last item
if( $org === null ) <
//was at eof, added something, move to it
return $key ;
>elseif( $org <( count ( $array )/ 2 )) < //somewhere in the middle +/- is fine
reset ( $array );
while ( key ( $array ) !== $org ) next ( $List );
>else <
while ( key ( $array ) !== $org ) prev ( $List );
>
return $key ;
>
>
echo «<pre>\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «Taken array;» ;
print_r ( $pr );

echo «\npush 1 returns » . array_push ( $pr , 1 ). «\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\npush 2 returns » . array_push ( $pr , 1 , 2 ). «\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\n add 1 returns » . array_add ( $pr , 2 ). «\n\n» ;
echo «————————————\n» ;
$pr = array( ‘foo’ => ‘bar’ , ‘bar’ => ‘foo’ );
echo «\n add 2 returns » . array_add ( $pr , 1 , 2 ). «\n\n» ;
echo «<pre/>\n\n» ;
?>
Outputs:
Taken array;Array
(
[foo] => bar
[bar] => foo
)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *