HTML Diff
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 &lt;?php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом "1" print_r($a); //на экране отобразится: Array ( [0] =&gt; a [2] =&gt; c ) ?&gt;<h2>2. Как удалить 1-й элемент массива?</h2>
6 &lt;?php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом "1" print_r($a); //на экране отобразится: Array ( [0] =&gt; a [2] =&gt; c ) ?&gt;<h2>2. Как удалить 1-й элемент массива?</h2>
7 <p>Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift(). Она извлечёт значение 1-го элемента, удалит его из массива и выполнит<strong>перенумерацию</strong>числовых ключей, начав с нуля.</p>
7 <p>Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift(). Она извлечёт значение 1-го элемента, удалит его из массива и выполнит<strong>перенумерацию</strong>числовых ключей, начав с нуля.</p>
8 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', 'third element' =&gt; 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] =&gt; b [third element] =&gt; c ) ?&gt;<p>В нашем случае 1-й элемент удаляется, а элемент 5 =&gt; ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.</p>
8 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', 'third element' =&gt; 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] =&gt; b [third element] =&gt; c ) ?&gt;<p>В нашем случае 1-й элемент удаляется, а элемент 5 =&gt; ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.</p>
9 <h2>3. Как удалить последний элемент массива?</h2>
9 <h2>3. Как удалить последний элемент массива?</h2>
10 <p>Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop().</p>
10 <p>Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop().</p>
11 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', 'third element' =&gt; 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] =&gt; a [5] =&gt; b ) ?&gt;<p>После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.</p>
11 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', 'third element' =&gt; 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] =&gt; a [5] =&gt; b ) ?&gt;<p>После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.</p>
12 <h2>4. Как удалить пустые элементы из массива?</h2>
12 <h2>4. Как удалить пустые элементы из массива?</h2>
13 <p>Сначала вспомним, что называют пустым элементом. Лучше всего определить "пустое значение" помогает результат работы функции empty(). Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:</p>
13 <p>Сначала вспомним, что называют пустым элементом. Лучше всего определить "пустое значение" помогает результат работы функции empty(). Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:</p>
14 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', '3rd' =&gt; 'c', array(), null, false, 0, '', '0', '00'); foreach ($stack as $k =&gt; $v) if (empty($v)) unset($stack[$k]); print_r($stack); //на экране отобразится : Array ( [3] =&gt; a [5] =&gt; b [3rd] =&gt; c [12] =&gt; 00 ) ?&gt;<p>Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ - тоже пустой элемент. А вот ’00’ пустым не является.</p>
14 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', '3rd' =&gt; 'c', array(), null, false, 0, '', '0', '00'); foreach ($stack as $k =&gt; $v) if (empty($v)) unset($stack[$k]); print_r($stack); //на экране отобразится : Array ( [3] =&gt; a [5] =&gt; b [3rd] =&gt; c [12] =&gt; 00 ) ?&gt;<p>Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ - тоже пустой элемент. А вот ’00’ пустым не является.</p>
15 <p>Если считаете, что поэлементная проверка массива - неоптимальный вариант, воспользуйтесь<strong>функцией сравнения массивов в PHP</strong>- array_diff(), перечислив с её помощью все элементы, которые считаем "нулевыми":</p>
15 <p>Если считаете, что поэлементная проверка массива - неоптимальный вариант, воспользуйтесь<strong>функцией сравнения массивов в PHP</strong>- array_diff(), перечислив с её помощью все элементы, которые считаем "нулевыми":</p>
16 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', '3rd' =&gt; 'c', array(), null, false, 0, '', '0', '00', ' '); $stack = array_diff($stack, array(array(), null, false, 0, '', '0', '00', ' ')); print_r($stack); //на экране отобразится: Array ( [3] =&gt; a [5] =&gt; b [3rd] =&gt; c ) ?&gt;<p>Очевидно, что данный способ более гибок.</p>
16 &lt;?php $stack = array(3 =&gt; 'a', 5 =&gt; 'b', '3rd' =&gt; 'c', array(), null, false, 0, '', '0', '00', ' '); $stack = array_diff($stack, array(array(), null, false, 0, '', '0', '00', ' ')); print_r($stack); //на экране отобразится: Array ( [3] =&gt; a [5] =&gt; b [3rd] =&gt; c ) ?&gt;<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 &lt;?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack); print_r($stack); //на экране отобразится: Array ( [0] =&gt; a [1] =&gt; b [3] =&gt; c [5] =&gt; 0 ) ?&gt;<p>Из кода видно, что функция удалила из PHP-массива повторяющиеся элементы. При этом функция имеет ещё один параметр, указывающий, как сравнивать элементы.</p>
19 &lt;?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack); print_r($stack); //на экране отобразится: Array ( [0] =&gt; a [1] =&gt; b [3] =&gt; c [5] =&gt; 0 ) ?&gt;<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 &lt;?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] =&gt; a ) ?&gt;<p>Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.</p>
22 &lt;?php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] =&gt; a ) ?&gt;<p>Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.</p>
23 <p>Хотите знать о PHP больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</p>
23 <p>Хотите знать о PHP больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</p>
24  
24