Удаление элементов массива
По индексу
Удаление одного элемента массива
Удалим в массиве элемент с индексом 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
)