Função array_splice
A função array_splice remove e retorna
parte de um array. Ao mesmo tempo, a parte removida
desaparece do array. No lugar da parte removida
é possível inserir novos elementos.
O primeiro parâmetro especifica o array a ser modificado. O segundo parâmetro especifica a partir de qual elemento iniciar a remoção, e o terceiro - quantos elementos remover. O terceiro parâmetro pode ser negativo - neste caso a contagem começará a partir do final (-1 - último elemento, -2 - penúltimo e assim por diante). O terceiro parâmetro pode ser omitido - neste caso o array será cortado até o final.
No último parâmetro opcional, pode-se definir um array de elementos que serão inseridos no lugar dos removidos.
Sintaxe
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array
Exemplo
Vamos remover elementos a partir do primeiro (que possui
índice 0), 3 unidades:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, 0, 3);
var_dump($res);
?>
Resultado da execução do código:
['a', 'b', 'c']
Ao mesmo tempo, o array $arr ficará assim:
['d', 'e']
Exemplo
Vamos remover elementos a partir do segundo (que possui
índice 1), 3 unidades:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, 1, 3);
var_dump($res);
?>
Resultado da execução do código:
['b', 'c', 'd']
Ao mesmo tempo, o array $arr ficará assim:
['a', 'e']
Exemplo
Vamos remover elementos a partir do segundo (que possui índice 1) até o final do array. Para isso, não escrevemos o terceiro parâmetro:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, 1);
var_dump($res);
?>
Resultado da execução do código:
['b', 'c', 'd', 'e']
Ao mesmo tempo, o array $arr ficará assim:
['a']
Exemplo
Vamos remover elementos a partir do penúltimo,
2 unidades. Para isso, o segundo parâmetro
será definido como -2 (posição do penúltimo
elemento):
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, -2, 2);
var_dump($res);
?>
Resultado da execução do código:
['d', 'e']
Ao mesmo tempo, o array $arr ficará assim:
['a', 'b', 'c']
Exemplo
Vamos remover elementos a partir do segundo (que possui
índice 1), 2 unidades, e em seu lugar inserir
os elementos 1, 2, 3:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, 1, 2, [1, 2, 3]);
var_dump($res);
?>
Resultado da execução do código:
['b', 'c']
Ao mesmo tempo, o array $arr ficará assim:
['a', 1, 2, 3, 'd', 'e']
Exemplo
Vamos não remover nada,
e simplesmente inserir os elementos 1, 2,
3 a partir da posição 1. Para
isso, o terceiro parâmetro é definido como zero:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
$res = array_splice($arr, 1, 0, [1, 2, 3]);
var_dump($res);
?>
Resultado da execução do código:
[]
Ao mesmo tempo, o array $arr ficará assim:
['a', 1, 2, 3, 'b', 'c', 'd', 'e']
Veja também
-
a função
array_slice,
que remove parte de um array sem alterar o array original