Мы принимаем к оплате:

«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!

«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 1000 рублей!

А также:


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


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

  • HOWTO
  • Linux
  • MacOS
  • Review
  • Scripts
  • Troubleshooting
  • Ubuntu
  • Web
  • Windows
  • Медиа
  • Как посчитать количество файлов в каталоге в Linux
  • Как установить язык программирования Rust на Linux
  • Как установить Putty в Ubuntu и других дистрибутивах Linux
  • 4 способа проверить наличие SSD на ноутбуке с Windows 10
  • Как проверить пустые слоты оперативной памяти на ПК с Windows 10

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

Для преобразования массивов в 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_megre.

Функция 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

Как добавить элементы в массив в цикле, используя php

Я динамически пытаюсь заполнить многомерный массив и иметь некоторые проблемы.

У меня есть список штатов США. Ассоциативный массив, подобный этим $states [nc], $states [sc] и т.д. В моем цикле, я хочу добавлять города в каждое состояние, поэтому $states [nc] [cities] содержит массив городов. Я придерживался логики.

foreach($states as $state) { $data[$state] = $state; foreach($cities as $city) { $data[$state]['cities'] .= $city; } }

Я знаю, что конкатенация неверна, но я не уверен, как добавить элементы в этот массив. Я продолжаю получать ошибки с помощью array_push.

Каков правильный способ добавления этих элементов?

задан user658182 06 марта '12 в 13:38

источник поделиться

Добавить в массив, если он еще не существует

Поскольку существует множество способов достижения желаемых результатов, и поэтому многие люди предоставили !in_array() в качестве ответа, и OP уже упоминает использование array_unique, я хотел бы предоставить несколько альтернатив.

Используя array_diff (php >= 4.0.1 || 5), вы можете отфильтровать только новые значения массива, которые не существуют. В качестве альтернативы вы также можете сравнить ключи и значения с помощью array_diff_assoc. http://php.net/manual/en/function.array-diff.php

$currentValues = array(1, 2); $newValues = array(1, 3, 1, 4, 2); var_dump(array_diff($newValues, $currentValues));

Результат:

Array ( [1] => 3 [3] => 4 )

http://ideone.com/SWO3D1

Другой метод использует array_flip для назначения значений в качестве ключей и сравнения их с помощью isset, который будет работать намного быстрее, чем in_array с большими наборами данных. Опять же, это отфильтровывает только новые значения, которые еще не существуют в текущих значениях.

$currentValues = [1, 2]; $newValues = [1, 3, 1, 4, 2]; $a = array(); $checkValues = array_flip($currentValues); foreach ($newValues as $v) { if (!isset($checkValues[$v])) { $a[] = $v; } }

Результат:

Array ( [0] => 3 [1] => 4 )

http://ideone.com/cyRyzN

С помощью любого из этих методов вы можете использовать array_merge для добавления уникальных новых значений к вашим текущим значениям.

  • http://ideone.com/JCakmR
  • http://ideone.com/bwTz2u

Результат:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )


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



Компьютерные курсы по направлениям:

Для начинающих


A

Компьютер для начинающих: Word, Excel, Access и другие программы!

Графические пакеты


B

Популярные пакеты Adobe Photoshop, CorelDraw, ArchiCAD, AutoCAD и другие!

WEB + анимация


C

Курсы по созданию сайтов, WEB-дизайну и крутой анимации в Adobe Flash!

Бухгалтерия + делопроизводство

Сетевые технологии


E

Курсы сборки ПК, системных администраторов и защиты информации!