- Как удалить элемент массива в PHP: все способы
- Что такое элемент массива
- Как удалить элемент массива + примеры
- Функция unset()
- Функция array_splice()
- Как удалить первый элемент массива + примеры
- Как удалить самый последний элемент массива + примеры
- Как удалить из массива пустые элементы
- Как удалить повторяющиеся элементы + примеры
- Топ-5 полезных видео по теме
- Как удалить элемент массива в PHP?
- 1. Удаляем элемент массива в PHP
- 2. Как удалить 1-й элемент массива?
- 3. Как удалить последний элемент массива?
- 4. Как удалить пустые элементы из массива?
- 5. Удаляем повторяющиеся элементы массива в PHP
Как удалить элемент массива в PHP: все способы
Массив в PHP (от англ. Array) — это глобальный объект для хранения данных упорядоченным образом. Как устроен массив: упорядоченный список элементов всегда имеет собственный ключ, он называется индексом, а каждое значение в такой коллекции данных называется элементом. При этом отсчет индекса всегда начинается с нуля. Самые частые примеры упорядоченных коллекций в реальном мире — списки данных, например, список HTML-элементов, список пользователей, список продуктов, список адресов.
Простыми словами, массив — это упорядоченный список элементов с указанным индексом (ключом к ним) для быстрого получения доступа к любому элементу.
Что такое элемент массива
Это каждое значение, которое хранится внутри него. И здесь мы снова возвращаемся к индексу: у каждого элемента есть собственная связь с индексом. Такой индекс и задействуется для получения доступа к какому-либо конкретному элементу.
О нумерации
Как и в других языках нумерация элементов массивов в PHP начинается с нуля. Например: 5-й элемент будет доступен по индексу 4, 6-й — по индексу 5 и так далее. Индекс и ключ можно рассматривать как равнозначные понятия.
Не знаете с чего начать обучение? Прежде чем браться за изучение полноценного языка программирования PHP, разумно будет пройти курс «Веб-разработчик». Если PHP кажется слишком сложным — запишитесь на курс «Основы вёрстки». В указанных курсах вы получите базис для дальнейшего освоения не только PHP но и других языков программирования.
Как удалить элемент массива + примеры
Примечание: в этой статье термины элемент и значение будут рассматриваться как взаимозаменяемые.
Стандартных функций array_remove, array_clear или array_delete в PHP нет.
Два способа удалить значение из массива в PHP, которые применяются наиболее широко, рассмотрим ниже.
Функция unset()
Поскольку объект типа array? простыми словами, это набор связанных переменных, то можно просто удалить эти переменные. Для этого подойдёт функция unset(). Например, вот так:
$array = array("fly", "bear", "bug", "queen"); unset($array[1]); print_r($array); /* *outputs: * Array( [0] => fly [2] => bug [3] => queen ) */
Указанная функция удаляет значение в массиве по конкретному индексу.
Можно использовать функцию unset() для удаления абсолютно любого элемента из массива.
unset() принимает на вход ключ и удаляет значение из массива. После удаления ключи и значения других элементов массива остаются неизменными, элементы не переставляются.
$arr = ["1", "2", "3", "4", "5", "6"]; unset($arr[2]); // удаляет значение индекса 2
Функция array_splice()
Функция удаляет значение согласно индексу + количеству удаляемых элементов.
$arr = ["1", "2", "2", "3", "3", "4"]; array_splice($arr, 3, 2); // удаляет два элемента, начиная с индекса 3
$arr = ["1", "2", "2", "3", "3", "4"]; array_splice($arr, 3, 3); // удалит три элемента, начиная с индекса 3
Как удалить первый элемент массива + примеры
Функция array_shift() удаляет первое значение из массива и возвращает этот элемент в качестве своего значения.
Примечание: если ключи числовые, то все значения в массиве получат новые ключи, начиная с нуля (и затем происходит увеличение на 1). Пример мы рассмотрим ниже.
"rabbit","b"=>"gazelle","c"=>"bat"); echo array_shift($a); // rabbit print_r ($a); ?> Array ( [b] => gazelle [c] => bat )
Как удалить самый последний элемент массива + примеры
Для этой цели допустимо использовать функцию array_pop(). Её главная задача — стереть последнее значение
Array ( [0] => rabbit [1] => gazelle )
Как удалить из массива пустые элементы
Для решения указанной задачи используйте функцию array_filter().
Вы можете применить функцию array_filter(), чтобы стереть или отфильтровать пустые элементы.
Запомнить: значение массива фильтруется при помощи коллбэк-функции. Однако, если она не установлена, то просто удалятся следующие элементы:
- «» (это будет пустая строка).
- 0 (это 0 в качестве целого числа).
- 0.0 (это 0 в качестве плавающей величины).
- «0» (это 0 в качестве строки).
- NULL, FALSE и array() (это просто пустой массив).
Давайте рассмотрим пример, чтобы понять, как это работает:
"; array(10) < [0]=>string(9) "albatross" [1]=> string(0) "" [2]=> int(0) [3]=> int(2) [4]=> NULL [5]=> int(-5) [6]=> string(1) "0" [7]=> string(7) "octopus" [8]=> int(10) [9]=> bool(false) > // Фильтруем $result = array_filter($array); var_dump($result); array(5) < [0]=>string(9) "albatross" [3]=> int(2) [5]=> int(-5) [7]=> string(7) "octopus" [8]=> int(10) > ?>
Обратите внимание: в нашем примере значения 0 и «0» также будут стерты.
Если необходимо сохранить 0, то можно задействовать коллбэк-функцию. Например, вот таким образом:
"; array(10) < [0]=>string(9) "albatross" [1]=> string(0) "" [2]=> int(0) [3]=> int(2) [4]=> NULL [5]=> int(-5) [6]=> string(1) "0" [7]=> string(7) "octopus" [8]=> int(10) [9]=> bool(false) > // Определяем функцию обратного вызова function myFilter($var) < return ($var !== NULL && $var !== FALSE && $var !== ""); >// Фильтруем $result = array_filter($array, "myFilter"); var_dump($result); array(7) < [0]=>string(9) "albatross" [2]=> int(0) [3]=> int(2) [5]=> int(-5) [6]=> string(1) "0" [7]=> string(7) "octopus" [8]=> int(10) > ?>
Функция обратного вызова myFilter() в примере инициируется для каждого значения объекта $array. Когда myFilter() возвращает TRUE — происходит добавление значения в результирующий массив, в противном случае элемент не добавляется.
Как удалить повторяющиеся элементы + примеры
Чтобы решить проблему удаления дублей в PHP можно используя функцию array_unique. Она удалит все дубли значений из объекта array.
Если два или более значений идентичны, то сохраняется первое, а второе — удаляется.
Примечание:в возвращаемом массиве сохраняются ключи исходного массива.
array_unique(array, sorttype)
- array. Обязательный аргумент. Исходный массив с дублирующимися элементами.
- sorttype. Необязательный аргумент. Указывает, как сравнивать элементы. Возможные значения:
- SORT_STRING. Это значение по умолчанию. Заключается в том, чтобы сравнивать элементы принимая их за строки.
- SORT_REGULAR. Указание сравнивать значения в обычном порядке (без изменения типов).
- SORT_NUMERIC. Указание сравнивать значения численно.
- SORT_LOCALE_STRING. Указание сравнивать значения как строки, основываясь на текущей локали.
$array = array(1, 2, 3, 4, 4, 4, 5, 5); $unique_array = array_unique($array); print_r($unique_array); Вывод: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [6] => 5 )
Топ-5 полезных видео по теме
Напоследок — посмотрите эти видео. Они помогут вникнуть в тему ещё лучше и сделают из вас настоящего профессионала во всём, что связано с удалением элементов.
Подробно разбирается функция unset(). Демонстрация работы функций array_diff() и array_search().
Автор показывает, как удалить элемент, когда мы знаем индекс элемента, а также если мы его не знаем.
Автор показывает, как удалить элемент из объекта array по значению, а не по ключу.
Полезное видео о том, как создавать, читать, добавлять, изменять и удалять элементы.
Наглядное и понятное видео с примерами от Drupal Academy по той же теме.
PHP — неотъемлемая часть бэкэнд-разработки в 2023 году. Успей попасть в группу сегодня и получи профессию разработчика уже завтра!
Как удалить элемент массива в PHP?
Одним из мощнейших инструментов PHP-разработчика являются массивы. Если вы работали с массивами в других языках программирования (Delphi, Fortrain, C++), то помните, что везде массив надо объявлять, указывая размерность и тип элементов. В PHP всё обстоит иначе.
Дело в том, что в PHP массив не является линейным объектом. Это, по сути, хеш-массив, представляющий собой набор пар — ключей с их значениями.
Теперь давайте посмотрим, как удалять элементы из хеш-массива в PHP. В вышеупомянутых языках программирования для таких действий придётся создавать специальный объект, односвязный либо 2-связный список, бережно выделять и освобождать память, наблюдать за восстановлением связей в списке. Что касается PHP, то тут весь необходимый «менеджмент» спрятан, но всегда готов к применению.
1. Удаляем элемент массива в PHP
Чтобы удалить элемент в PHP, достаточно всего лишь знать его ключ — в таком случае удаление будет сведено к вызову функции unset() :
php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом «1» print_r($a); //на экране отобразится: Array ( [0] => a [2] => c ) ?>
2. Как удалить 1-й элемент массива?
Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift() . Она извлечёт значение 1-го элемента, удалит его из массива и выполнит перенумерацию числовых ключей, начав с нуля.
php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] => b [third element] => c ) ?>
В нашем случае 1-й элемент удаляется, а элемент 5 => ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.
3. Как удалить последний элемент массива?
Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop() .
php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b ) ?>
После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.
4. Как удалить пустые элементы из массива?
Сначала вспомним, что называют пустым элементом. Лучше всего определить «пустое значение» помогает результат работы функции empty() . Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:
php $stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00'); foreach ($stack as $k => $v) if (empty($v)) unset($stack[$k]); print_r($stack); //на экране отобразится : Array ( [3] => a [5] => b [3rd] => c [12] => 00 ) ?>
Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ — тоже пустой элемент. А вот ’00’ пустым не является.
Если считаете, что поэлементная проверка массива — неоптимальный вариант, воспользуйтесь функцией сравнения массивов в PHP — array_diff() , перечислив с её помощью все элементы, которые считаем «нулевыми»:
php $stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00', ' '); $stack = array_diff($stack, array(array(), null, false, 0, '', '0', '00', ' ')); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b [3rd] => c ) ?>
Очевидно, что данный способ более гибок.
5. Удаляем повторяющиеся элементы массива в PHP
Порой возникает необходимость удалить повторяющиеся элементы массива в PHP. Для решения этой задачи существует специальная функция под названием array_unique() :
php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack); print_r($stack); //на экране отобразится: Array ( [0] => a [1] => b [3] => c [5] => 0 ) ?>
Из кода видно, что функция удалила из PHP-массива повторяющиеся элементы. При этом функция имеет ещё один параметр, указывающий, как сравнивать элементы.
Возможные типы сравнения: • SORT_REGULAR — сравнение без преобразования типа элементов; • SORT_STRING — сравнение как строки; • SORT_NUMERIC — сравнение как чисел (пытаемся преобразовать в число); • SORT_LOCALE_STRING — сравнение как строки, но с учётом выбранного набора символов.
По умолчанию применяется SORT_STRING. Выбирая типы сравнения, помните, что это важно. Давайте изменим тип в прошлом примере на SORT_NUMERIC:
php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] => a ) ?>
Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.
Хотите знать о PHP больше? Записывайтесь на курс «Backend-разработчик на PHP»!