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

По индексу

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

Удалим в массиве элемент с индексом 1.

Скопировано
$arr = [ 'раз', 'два', 'три' ];
unset( $arr[1] );
Показать код

Результат:

Array (
  [0] => раз
  [2] => три
)

Удаление нескольких элементов массива

Если мы хотим удалить несколько элементов массива используя цикл for, то надо делать перебор массива с конца, потому что при прямом переборе при удалении элементов индексы будут сдвигаться.

Удалим все элементы массива с четными индексами:

Скопировано
$arr = [ 'синий', 'желтый', 'белый', 'зеленый', 'красный' ];
for( $i = count( $arr ) - 1; $i >= 0; $i-- ) {
if( ( $i % 2 ) == 0 ) {
unset( $arr[$i] );
}
}
Показать код

Результат:

Array (
  [1] => желтый
  [3] => зеленый
)

Пример использования цикла foreach для ассоциативного массива:

Скопировано
$arr = [
	'один' => 1,
	'два' => 2,
	'три' => 3,
	'четыре' => 4,
	'пять' => 5
];
foreach( $arr as $key => $val ) {
	if( $key == 'три' || $key == 'четыре' ) unset( $arr[$key] );
}
Показать код

Результат:

Array (
  [один] => 1
  [два] => 2
  [пять] => 5
)

По значению

Вариант 1

Скопировано
$arr = [ 'синий', 'желтый', 'белый', 'зеленый', 'красный' ];
$arr = array_diff( $arr, [ 'синий', 'белый' ] );
Показать код

Результат:

Array (
  [1] => желтый
  [3] => зеленый
  [4] => красный
)

Вариант 2

Скопировано
$arr = [ 'синий', 'желтый', 'белый', 'зеленый', 'красный' ];
if( ( $key = array_search( 'белый', $arr ) ) !== false ) {
unset( $arr[$key] );
}
Показать код

Результат:

Array (
  [0] => синий
  [1] => желтый
  [3] => зеленый
  [4] => красный
)

Удалить первый элемент массива

Скопировано
$arr = [ 'a' => 'синий', 'желтый', 'c' => 'белый' ];
array_shift( $arr );
Показать код

Результат:

Array (
  [0] => желтый
  [c] => белый
)

Удалить последний элемент массива

Вариант 1

Скопировано
$arr = [ 'a' => 'синий', 'желтый', 'c' => 'белый' ];
array_pop( $arr );
Показать код

Результат:

Array (
  [a] => синий
  [0] => желтый
)

Вариант 2

Скопировано
$callback = function( &$arr ) { array_pop( $arr ); };
array_walk( $arr, $callback );
Показать код

Удалить часть массива

Для удаления фрагмента массива можно использовать функцию array_splice:

Скопировано
$arr = [ 'один', 'два', 'три', 'четыре', 'пять' ];
array_splice( $arr, 1, 3 );
Показать код

Результат:

Array (
  [0] => один
  [1] => пять
)

Здесь мы удаляем элементы начиная с первого индекса в количестве трех штук.

Удалить пустые элементы массива

Скопировано
$arr = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0
];
$arr = array_filter( $arr );
Показать код

Результат:

Array (
  [0] => foo
  [2] => -1
)