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

Как добавить в массив php

  • автор:

ArrayObject::append

Замечание:

Этот метод не может быть вызван, если ArrayObject был создан из объекта. В этом случае используйте вместо него ArrayObject::offsetSet() .

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

Значение, которое должно быть добавлено.

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

Функция не возвращает значения после выполнения.

Примеры

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

$arrayobj = new ArrayObject (array( ‘first’ , ‘second’ , ‘third’ ));
$arrayobj -> append ( ‘fourth’ );
$arrayobj -> append (array( ‘five’ , ‘six’ ));
var_dump ( $arrayobj );
?>

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

object(ArrayObject)#1 (5) < [0]=>string(5) "first" [1]=> string(6) "second" [2]=> string(5) "third" [3]=> string(6) "fourth" [4]=> array(2) < [0]=>string(4) "five" [1]=> string(3) "six" > >

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

  • ArrayObject::offsetSet() — Устанавливает новое значение по указанному индексу

Как в php добавить к массиву другой массив?

Есть несколько способов, чтобы добавить массив в массив при помощи php и все они могут пригодиться для отдельных случаев.

«Оператор +»

Это простой, но коварный способ:

$c = $a + $b

Так добавляются только те ключи, которых еще нет в массиве $a. При этом элементы дописываются в конец массива.

То есть если ключ из массива $b отсутствует в массиве $a, то в результирующем массиве добавится элемент с этим ключом.
Если в массиве $a уже есть элемент с таким ключом, то его значение останется без изменений.

Иными словами от перемены мест слагаемых сумма меняется: $a + $b != $b + $a — это стоит запомнить.

А теперь более подробный пример, чтобы проиллюстрировать это:

$arr1 = ['a' => 1, 'b' => 2]; $arr2 = ['b' => 3, 'c' => 4]; var_export($arr1 + $arr2); //array ( // 'a' => 1, // 'b' => 2, // 'c' => 4, //) var_export($arr2 + $arr1); //array ( // 'b' => 3, // 'c' => 4, // 'a' => 1, //)

Функция array_merge()

Использовать эту функцию можно следующим образом:

$result = array_merge($arr1, $arr2)

Она сбрасывает числовые индексы и заменяет строковые. Отлично подходит для того, чтобы склеить два или несколько массивов с числовыми индексами:

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

Функция array_merge_recursive

Делает то же самое, что и array_merge только еще и рекурсивно проходит по каждой ветке массива и проделывает то же самое с потомками. Подробная справка по array_merge_recursive

Функция array_replace()

Заменяет элементы массива элементами других переданных массивов. Подробная справка по array_replace.

Функция array_replace_recursive()

То же что и array_replace только обрабатывает все ветки массива. Справка по array_replace_recursive.

Другие функции

Для работы с массивами в php есть еще ряд полезных функций, о существовании которых желательно знать. Прочитать о них можно по ссылке: http://php.net/manual/ru/book.array.php

Свежие записи

  • SQL UPDATE: примеры обновления строк в таблице
  • PHP: substr и мощные альтернативы, чтобы вырезать часть строки
  • Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции
  • Скачать ShowKeyPlus: ссылка на последнюю официальную версию, скачивание, установка
  • Как создать файл в Linux: 12 способов
  • SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
  • PHP: str_replace — замена или удаление подстроки в строке
  • Функция date() в php: распространенные форматы, примеры, советы
  • cURL в PHP: примеры POST, GET запросов с headers, cookie, JSON и многопоточностью
  • JSON в PHP: примеры json_encode, json_decode, работа с кириллицей и utf-8
  • Файл gitignore — примеры и документация
  • Сортировка массивов в php: ksort, asort и прочие sort’ы
  • jQuery onclick: как выполнить код при клике на кнопку
  • 500 Internal Server Error — в чем причина?
  • SMTP от Yandex: как отправить письма из PHP — пример настроек
  • No such file or directory — в чем причина?
  • Как получить первый элемент массива в php
  • Cтроку в массив по разделителю в PHP: explode, str_split, strtok — что выбрать?
  • 301 редирект на https с www через htaccess
  • Как в php добавить к массиву другой массив?
  • 301 редирект на https без www с помощью htaccess
  • Регулярные выражения в PHP
  • PHP json_decode — как декодировать результат в массив?
  • Yii2 ActiveRecord шпаргалка по составлению запросов
  • Поиск подстроки в строке с помощью PHP
  • Отправка почты на php
  • Как подключить php код в html
  • Конвертировать массив в строку при помощи PHP
  • Подключение одного php файла в другой
  • Подборка ссылок для веб-разработчика
  • Проблема с кириллицей в PHPWord

array_unshift

array_unshift() добавляет переданные в качестве аргументов элементы в начало массива array . Обратите внимание, что список элементов добавляется целиком, то есть порядок элементов сохраняется. Все числовые ключи будут изменены таким образом, что нумерация массива будет начинаться с нуля, в то время как строковые ключи останутся прежними.

Замечание:

Сбрасывает внутренний указатель массива на первый элемент.

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

Значения для добавления.

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

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

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

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

Примеры

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

array_unshift ( $queue , «apple» , «raspberry» );
var_dump ( $queue );
?>

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

array(4) < [0] =>string(5) "apple" [1] => string(9) "raspberry" [2] => string(6) "orange" [3] => string(6) "banana" >

Пример #2 Пример использования с ассоциативными массивами

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

$foods = [
‘apples’ => [
‘McIntosh’ => ‘red’ ,
‘Granny Smith’ => ‘green’ ,
],
‘oranges’ => [
‘Navel’ => ‘orange’ ,
‘Valencia’ => ‘orange’ ,
],
];
$vegetables = [
‘lettuce’ => [
‘Iceberg’ => ‘green’ ,
‘Butterhead’ => ‘green’ ,
],
‘carrots’ => [
‘Deep Purple Hybrid’ => ‘purple’ ,
‘Imperator’ => ‘orange’ ,
],
‘cucumber’ => [
‘Kirby’ => ‘green’ ,
‘Gherkin’ => ‘green’ ,
],
];

array_unshift ( $foods , $vegetables );
var_dump ( $foods );

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

array(3) < [0] =>array(3) < 'lettuce' =>array(2) < 'Iceberg' =>string(5) "green" 'Butterhead' => string(5) "green" > 'carrots' => array(2) < 'Deep Purple Hybrid' =>string(6) "purple" 'Imperator' => string(6) "orange" > 'cucumber' => array(2) < 'Kirby' =>string(5) "green" 'Gherkin' => string(5) "green" > > 'apples' => array(2) < 'McIntosh' =>string(3) "red" 'Granny Smith' => string(5) "green" > 'oranges' => array(2) < 'Navel' =>string(6) "orange" 'Valencia' => string(6) "orange" > >

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

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

User Contributed Notes 13 notes

16 years ago

You can preserve keys and unshift an array with numerical indexes in a really simple way if you’ll do the following:

$someArray =array( 224 => ‘someword1’ , 228 => ‘someword2’ , 102 => ‘someword3’ , 544 => ‘someword3’ , 95 => ‘someword4’ );

$someArray =array( 100 => ‘Test Element 1 ‘ , 255 => ‘Test Element 2’ )+ $someArray ;
?>

now the array looks as follows:

array(
100=>’Test Element 1 ‘,
255=>’Test Element 2′
224=>’someword1′,
228=>’someword2′,
102=>’someword3′,
544=>’someword3′,
95=>’someword4′
);

21 years ago

array_merge() will also reindex (see array_merge() manual entry), but the ‘+’ operator won’t, so.

$arrayone =array( «newkey» => «newvalue» ) + $arrayone ;
?>

does the job.

12 years ago

Sahn’s example almost works but has a small error. Try it like this if you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:

8 years ago

Anonymous’ associative version wasn’t working for me, but it did with this small tweak:

16 years ago

This becomes a nice little problem if you index your arrays out of order (while manually sorting). For example:

$recordMonths [ 3 ] = ‘8/%/2006’ ;
$recordMonths [ 4 ] = ‘7/%/2004’ ;
$recordMonths [ 0 ] = ‘3/%/2007’ ;
$recordMonths [ 1 ] = ‘2/%/2007’ ;
$recordMonths [ 5 ] = ’12/%/2000′ ;
$recordMonths [ 6 ] = ’11/%/2000′ ;
$recordMonths [ 7 ] = ’10/%/2000′ ;
$recordMonths [ 2 ] = ‘1/%/2007’ ;

for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
array_unshift ( $recordMonths , ‘%’ );
for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
?>

Produces:

singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 1/%/2007
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: %
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: 1/%/2007

It reindexes them based on the order they were created. It seems like if an array has all numeric indexes, then it should reindex them based on the order of their index. Just my opinion.

19 years ago

even simpler unshifting of a reference !
/**
* @return int
* @param $array array
* @param $value mixed
* @desc Prepend a reference to an element to the beginning of an array. Renumbers numeric keys, so $value is always inserted to $array[0]
*/
function array_unshift_ref (& $array , & $value )
$return = array_unshift ( $array , » );
$array [ 0 ] =& $value ;
return $return ;
>
?>

22 years ago

Actually this problem with the keys getting reindexed only happens when the keys are numerical:

$a = array( «f» => «five» , «s» => «six» , «t» =>
«twenty» );

print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>

array_unshift ( $a , «zero» );
print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>
?>

Array
(
[f] => five
[s] => six
[t] => twenty
)

k: f v: five
k: s v: six
k: t v: twenty
Array
(
[0] => zero
[f] => five
[s] => six
[t] => twenty
)

k: 0 v: zero
k: f v: five
k: s v: six
k: t v: twenty

3 months ago

This function helps if you want to prepend a key and value pair to the beginning of an array:

function array_kunshift(array $array, string|int $key, mixed $value): array return array_merge([$key => $value], $array);
>

7 years ago

Another way to tack something to the beginning of an array is with array_merge().

$plans = array(‘AARP’=>’Senior’, ‘AAA’=>’Automobile Club’);

$plans = array_merge(array(«BAR»=>»Best Available Rate»), $plans);

22 years ago

If you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:

20 years ago

If you need to change the name of a key without changing its position in the array this function may be useful.

function array_key_change ( $Old , $New , $In , $NewVal = NULL ) <
$Temp = array();
while(isset( $Temp [ $Old ]) == false ) <
list( $k , $v ) = each ( $In );
$Temp [ $k ] = $v ;
unset( $In [ $k ]);
>
if( $NewVal == NULL ) <
$NewVal = $Temp [ $Old ];
>
unset( $Temp [ $Old ]);
$Temp = array_reverse ( $Temp );
$In = array_merge (array( $New => $NewVal ), $In );
while(list( $k , $v ) = each ( $Temp )) <
$In = array_merge (array( $k => $v ), $In );
>
return( $In );
>
?>

17 years ago

I had a need tonight to convert a numeric array from 1-based to 0-based, and found that the following worked just fine due to the «side effect» of renumbering:

array_unshift ( $myArray , array_shift ( $myArray ));
?>

20 years ago

Last version of PHP deprecated unshifting of a reference.
You can use this function instead :

function array_unshift1 (& $ioArray , $iValueWrappedInAnArray ) <
$lNewArray = false ;
foreach ( array_keys ( $ioArray ) as $lKey )
$lNewArray [ $lKey + 1 ] = & $ioArray [ $lKey ];
$ioArray = array (& $iValueWrappedInAnArray [ 0 ]);
if ( $lNewArray )
foreach ( array_keys ( $lNewArray ) as $lKey )
$ioArray [] = & $lNewArray [ $lKey ];
return count ( $ioArray );
>

// before last PHP (now generates a deprecation warning)
array_unshift ( $a , & $v );
// since last PHP (caution, there is a wrapping array !!)
array_unshift1 ( $a , array (& $v ));
?>

  • Функции для работы с массивами
    • array_​change_​key_​case
    • array_​chunk
    • array_​column
    • array_​combine
    • array_​count_​values
    • array_​diff_​assoc
    • array_​diff_​key
    • array_​diff_​uassoc
    • array_​diff_​ukey
    • array_​diff
    • array_​fill_​keys
    • array_​fill
    • array_​filter
    • array_​flip
    • array_​intersect_​assoc
    • array_​intersect_​key
    • array_​intersect_​uassoc
    • array_​intersect_​ukey
    • array_​intersect
    • array_​is_​list
    • array_​key_​exists
    • array_​key_​first
    • array_​key_​last
    • array_​keys
    • array_​map
    • array_​merge_​recursive
    • array_​merge
    • array_​multisort
    • array_​pad
    • array_​pop
    • array_​product
    • array_​push
    • array_​rand
    • array_​reduce
    • array_​replace_​recursive
    • array_​replace
    • array_​reverse
    • array_​search
    • array_​shift
    • array_​slice
    • array_​splice
    • array_​sum
    • array_​udiff_​assoc
    • array_​udiff_​uassoc
    • array_​udiff
    • array_​uintersect_​assoc
    • array_​uintersect_​uassoc
    • array_​uintersect
    • array_​unique
    • array_​unshift
    • array_​values
    • array_​walk_​recursive
    • array_​walk
    • array
    • arsort
    • asort
    • compact
    • count
    • current
    • end
    • extract
    • in_​array
    • key_​exists
    • key
    • krsort
    • ksort
    • list
    • natcasesort
    • natsort
    • next
    • pos
    • prev
    • range
    • reset
    • rsort
    • shuffle
    • sizeof
    • sort
    • uasort
    • uksort
    • usort
    • each
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

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

    Для этого нужно указать индекс под которым в массиве располагается подмассив и использовать [] . Стоит сказать, что вложенность может быть разной и тогда нужно последовательно углубиться в массив по индексам, пока мы не дойдём до нужно нам подмассива. С добавлением элемента во вложенный массив лучше разобраться на примерах.

     $collection = ['one', ['two', 'three']]; $collection[1][] = 'four'; // ['one', ['two', 'three', 'four']] $collection2 = ['one', ['two', 'three', ['four']]]; $collection2[1][2][] = 'five'; // ['one', ['two', 'three'. ['four', 'five']]] 

    18 августа 2023

    А если мы перебираем с помощью foreach и индекс массива нам не известен, есть только непосредственно итерация массива

     'foo', 'b' => 'foo'], ['c' => 'foo', 'd' => 'foo'], ); foreach($massiv as $i) < $i['j'] = 'foo'; >; 

    К сожалению не добавляет

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

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