Функция array_splice отрезает и возвращает часть массива. При этом отрезанная часть исчезает из массива. Вместо отрезанной части можно вставлять новые элементы.

Первым параметром указывается массив для разрезания. Вторым параметром указывается, с какого элемента начинать отрезание, а третьим - сколько элементов отрезать. Третий параметр может быть отрицательным - в этом случае отсчет начнется с конца (-1 - последний элемент, -2 - предпоследний и так далее). Третий параметр можно вообще не указывать - в этом случае массив отрежется до самого конца.

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

См. также функцию array_slice, которая отрезает часть массива, не изменяя при этом сам массив.

Синтаксис

array_splice(массив, откуда отрезать, [сколько], [вставить взамен]);

Примеры

Пример

Давайте вырежем элементы с первого (имеет номер 0), 3 штуки:

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, 0, 3));
?>

Результат выполнения кода:

['a', 'b', 'c']

При этом массив $arr примет следующий вид:

['d', 'e']

Пример

Давайте вырежем элементы со второго (имеет номер 1), 3 штуки:

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, 1, 3));
?>

Результат выполнения кода:

['b', 'c', 'd']

При этом массив $arr примет следующий вид:

['a', 'e']

Пример

Давайте вырежем элементы со второго (имеет номер 1) до конца массива. Для этого третий параметр не пишем:

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, 1));
?>

Результат выполнения кода:

['b', 'c', 'd', 'e']

При этом массив $arr примет следующий вид:

['a']

Пример

Давайте вырежем элементы с предпоследнего, 2 штуки. Для этого второй параметр установим в -2 (позиция предпоследнего элемента):

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, -2, 2));
?>

Результат выполнения кода:

['d', 'e']

При этом массив $arr примет следующий вид:

['a', 'b', 'c']

Пример

Давайте вырежем элементы со второго (имеет номер 1), 2 штуки, а в замен вставим элементы 1, 2, 3:

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, 1, 2, [1, 2, 3]));
?>

Результат выполнения кода:

['b', 'c']

При этом массив $arr примет следующий вид:

['a', 1, 2, 3, 'd', 'e']

Пример

Давайте вообще ничего не будем вырезать, а просто вставим элементы 1, 2, 3 начиная с позиции 1. Для этого третий параметр ставится в ноль:

<?php
	$arr = ['a', 'b', 'c', 'd', 'e'];
	var_dump(array_splice($arr, 1, 0, [1, 2, 3]));
?>

Результат выполнения кода:

[]

При этом массив $arr примет следующий вид:

['a', 1, 2, 3, 'b', 'c', 'd', 'e']