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

Массивы в PHP — один из мощнейших инструментов программиста. Когда я начинал изучать PHP, у меня был определенный багаж знаний работы с массивами в других языках программирования, таких как C++, Delphi и Fortrain. Везде требовалось объявить массив, указать его размерность, тип элементов. Ничего похожего вы не встретите в PHP. В PHP массив — это не линейный объект, а хеш-массив, т.е. набор пар — ключей и их значений.  При чем, если ключ — это скаляр, то значение может быть любым объектом, в том числе и ещё одном хешем.

Дальше я хочу показать разнообразные способы удаления элементов из хеш-массива в PHP. В языках вроде C++, Delphi для подобных трюков понадобится создать специальный объект, двусвязный или односвязный список, аккуратно выделять и освобождать память, следить за восстановлением связей в списке. В PHP же весь это менеджмент спрятан и всегда готов к использованию.

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

Если вы знаете ключ, то удаление сводится к вызову функции unset().

Как удалить первый элемент массива в PHP?

Если вы не знаете ключ, но знаете, что удалить нужно именно первый элемент массива, то можно воспользоваться функцией array_shift(). Функция извлекает значение первого элемента, удаляет его из массива и производит перенумерацию числовых ключей начиная с нуля.

В итоге, первый элемент удален, а элемент 5 => ‘b’, попадает под перенумерацию. Элементы со строковыми ключами перенумерацией не затрагиваются.

Как в PHP удалить последний элемент массива?

Похожим образом удаляется последний элемент из массива. В PHP для этого послужит функция array_pop().

Последний элемент массива удален, перенумерация оставшихся элементов не производится.

Как удалить из массива пустые элементы в PHP?

Разберемся с понятием пустой элемент. Под «пустыми» элементами можно понимать разные скалярные и не скалярные значения. Наиболее полно определение «пустого значения» определяет результат работы функции empty(). Она возвращает true для пустого элемента (не только скалярного). В этом можно убедиться на следующем примере.

Т.е. мы в цикле проверяем каждый элемент массива функцией empty(), и удаляем пустые. Обратите внимание, что строковый скаляр ‘0’ — тоже считается пустым элементом. А вот ’00’ — уже не является пустым.

Если проверка массива по-элементно кажется вам не оптимальной, то можно воспользоваться функций сравнения массивов — array_diff(), где перечислить все элементы, которые мы считаем «нулевыми».

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

Как удалить повторяющиеся элементы массива PHP?

Это ещё одна частая задача при работе с массивами. В PHP для её решения есть специальная функция — array_unique(). Посмотрим как она работает.

Видим, что функция удалила из массива повторяющиеся элементы. На самом деле у функции есть ещё один параметр, который указывает как сравнивать элементы.

Значения могут быть следующими:

  • SORT_REGULAR — сравнивать без преобразования типа элементов,
  • SORT_NUMERIC — сравнивать как числа (т.е. пытаясь преобразовать в число),
  • SORT_STRING — сравнивать как строки
  • SORT_LOCALE_STRING — сравнивать как строки, учитывая выбранный набор символов (т.н. locale).

По умолчанию используется — SORT_STRING. Выбор типа сравнения имеет огромное значение. Поменяем в предыдущем примере тип на SORT_NUMERIC.

При сравнении все элементы преобразовывались в численному типу скаляра. Что в нашем случае неизменно давало значение ноль. Так у нас остался только первый элемент.

Написать комментарий

Мало букафф? Читайте есчо !

Валидатор для JSON строки в PHP

Октябрь 2, 2018 г.

К JSON можно относиться как к одной из разновидностей текстовых форматов передачи данных. Но для PHP это просто ещё одна скалярная строка. Как определить, что перед нами действительно JSON? Чтобы убедиться, придется попытаться декодировать строку. ...

Читать

Обращение к свойству объекта/класса в PHP, если имя св-ва хранится в переменной

Декабрь 12, 2013 г.

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

Читать

 

Комментарии к «Удаление элементов из массива в PHP»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Удаление элементов из массива в PHP”

  1. shoputils:

    В удалении последнего элемента — присвоение удаляемого элемента переменной не нужно.
    Достаточно сделать так:

    array_pop($stack);