0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Одним из мощнейших инструментов PHP-разработчика являются<strong>массивы</strong>. Если вы работали с массивами в других языках программирования (Delphi, Fortrain, C++), то помните, что везде массив надо объявлять, указывая размерность и тип элементов.<strong>В PHP всё обстоит иначе</strong>.</p>
1
<p>Одним из мощнейших инструментов PHP-разработчика являются<strong>массивы</strong>. Если вы работали с массивами в других языках программирования (Delphi, Fortrain, C++), то помните, что везде массив надо объявлять, указывая размерность и тип элементов.<strong>В PHP всё обстоит иначе</strong>.</p>
2
<p>Дело в том, что в PHP массив не является линейным объектом. Это, по сути, хеш-массив, представляющий собой набор пар - ключей с их значениями.</p>
2
<p>Дело в том, что в PHP массив не является линейным объектом. Это, по сути, хеш-массив, представляющий собой набор пар - ключей с их значениями.</p>
3
<p>Теперь давайте посмотрим, как удалять элементы из хеш-массива в PHP. В вышеупомянутых языках программирования для таких действий придётся создавать специальный объект, односвязный либо 2-связный список, бережно выделять и освобождать память, наблюдать за восстановлением связей в списке. Что касается PHP, то тут весь необходимый "менеджмент" спрятан, но всегда готов к применению.</p>
3
<p>Теперь давайте посмотрим, как удалять элементы из хеш-массива в PHP. В вышеупомянутых языках программирования для таких действий придётся создавать специальный объект, односвязный либо 2-связный список, бережно выделять и освобождать память, наблюдать за восстановлением связей в списке. Что касается PHP, то тут весь необходимый "менеджмент" спрятан, но всегда готов к применению.</p>
4
<h2>1. Удаляем элемент массива в PHP</h2>
4
<h2>1. Удаляем элемент массива в PHP</h2>
5
<p>Чтобы удалить элемент в PHP, достаточно всего лишь знать его ключ - в таком случае удаление будет сведено к вызову функции unset():</p>
5
<p>Чтобы удалить элемент в PHP, достаточно всего лишь знать его ключ - в таком случае удаление будет сведено к вызову функции unset():</p>
6
<?php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом "1" print_r($a); //на экране отобразится: Array ( [0] => a [2] => c ) ?><h2>2. Как удалить 1-й элемент массива?</h2>
6
<?php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом "1" print_r($a); //на экране отобразится: Array ( [0] => a [2] => c ) ?><h2>2. Как удалить 1-й элемент массива?</h2>
7
<p>Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift(). Она извлечёт значение 1-го элемента, удалит его из массива и выполнит<strong>перенумерацию</strong>числовых ключей, начав с нуля.</p>
7
<p>Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift(). Она извлечёт значение 1-го элемента, удалит его из массива и выполнит<strong>перенумерацию</strong>числовых ключей, начав с нуля.</p>
8
<?php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] => b [third element] => c ) ?><p>В нашем случае 1-й элемент удаляется, а элемент 5 => ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.</p>
8
<?php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] => b [third element] => c ) ?><p>В нашем случае 1-й элемент удаляется, а элемент 5 => ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.</p>
9
<h2>3. Как удалить последний элемент массива?</h2>
9
<h2>3. Как удалить последний элемент массива?</h2>
10
<p>Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop().</p>
10
<p>Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop().</p>
11
<?php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b ) ?><p>После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.</p>
11
<?php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b ) ?><p>После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.</p>
12
<h2>4. Как удалить пустые элементы из массива?</h2>
12
<h2>4. Как удалить пустые элементы из массива?</h2>
13
<p>Сначала вспомним, что называют пустым элементом. Лучше всего определить "пустое значение" помогает результат работы функции empty(). Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:</p>
13
<p>Сначала вспомним, что называют пустым элементом. Лучше всего определить "пустое значение" помогает результат работы функции empty(). Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:</p>
14
<?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 ) ?><p>Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ - тоже пустой элемент. А вот ’00’ пустым не является.</p>
14
<?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 ) ?><p>Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ - тоже пустой элемент. А вот ’00’ пустым не является.</p>
15
<p>Если считаете, что поэлементная проверка массива - неоптимальный вариант, воспользуйтесь<strong>функцией сравнения массивов в PHP</strong>- array_diff(), перечислив с её помощью все элементы, которые считаем "нулевыми":</p>
15
<p>Если считаете, что поэлементная проверка массива - неоптимальный вариант, воспользуйтесь<strong>функцией сравнения массивов в PHP</strong>- array_diff(), перечислив с её помощью все элементы, которые считаем "нулевыми":</p>
16
<?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 ) ?><p>Очевидно, что данный способ более гибок.</p>
16
<?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 ) ?><p>Очевидно, что данный способ более гибок.</p>
17
<h2>5. Удаляем повторяющиеся элементы массива в PHP</h2>
17
<h2>5. Удаляем повторяющиеся элементы массива в PHP</h2>
18
<p>Порой возникает необходимость удалить повторяющиеся элементы массива в PHP. Для решения этой задачи существует специальная функция под названием array_unique():</p>
18
<p>Порой возникает необходимость удалить повторяющиеся элементы массива в PHP. Для решения этой задачи существует специальная функция под названием array_unique():</p>
19
<?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 ) ?><p>Из кода видно, что функция удалила из PHP-массива повторяющиеся элементы. При этом функция имеет ещё один параметр, указывающий, как сравнивать элементы.</p>
19
<?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 ) ?><p>Из кода видно, что функция удалила из PHP-массива повторяющиеся элементы. При этом функция имеет ещё один параметр, указывающий, как сравнивать элементы.</p>
20
<p>Возможные типы сравнения: • SORT_REGULAR - сравнение без преобразования типа элементов; • SORT_STRING - сравнение как строки; • SORT_NUMERIC - сравнение как чисел (пытаемся преобразовать в число); • SORT_LOCALE_STRING - сравнение как строки, но с учётом выбранного набора символов.</p>
20
<p>Возможные типы сравнения: • SORT_REGULAR - сравнение без преобразования типа элементов; • SORT_STRING - сравнение как строки; • SORT_NUMERIC - сравнение как чисел (пытаемся преобразовать в число); • SORT_LOCALE_STRING - сравнение как строки, но с учётом выбранного набора символов.</p>
21
<p>По умолчанию применяется SORT_STRING. Выбирая типы сравнения, помните, что это важно. Давайте изменим тип в прошлом примере на SORT_NUMERIC:</p>
21
<p>По умолчанию применяется SORT_STRING. Выбирая типы сравнения, помните, что это важно. Давайте изменим тип в прошлом примере на SORT_NUMERIC:</p>
22
<?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] => a ) ?><p>Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.</p>
22
<?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] => a ) ?><p>Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.</p>
23
<p>Хотите знать о PHP больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</p>
23
<p>Хотите знать о PHP больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</p>
24
24