Мы принимаем к оплате:
«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!
«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 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 )