array_splice()
Impara a usare array_splice in PHP per rimuovere, sostituire e inserire elementi negli array, con sintassi, parametri ed esempi eseguibili.
La manipolazione degli array è una parte essenziale della programmazione, e PHP fornisce diverse funzioni integrate per lavorare con gli array. Una delle più flessibili è array_splice — una singola funzione in grado di rimuovere, sostituire e inserire elementi in qualsiasi posizione. A differenza di array_slice(), che copia una porzione di un array lasciando intatto l'originale, array_splice modifica l'array sul posto e restituisce gli elementi rimossi.
Questa pagina spiega la firma della funzione, il comportamento di ciascun parametro (compresi gli offset negativi spesso fonte di confusione e il rinumerazione delle chiavi), e mostra esempi eseguibili per le tre operazioni principali: rimozione, sostituzione e inserimento.
Che cos'è la funzione array_splice?
La funzione array_splice è una funzione integrata di PHP che consente di rimuovere o sostituire elementi di un array e di aggiungere nuovi elementi al loro posto. La funzione modifica l'array originale e restituisce gli elementi rimossi, se presenti. La funzione accetta tre parametri obbligatori e due parametri opzionali:
Sintassi della funzione PHP array_splice
array_splice(array &$input, int $offset, ?int $length = null, mixed $replacement = [])$input: L'array di input che verrà modificato$offset: L'indice da cui iniziare l'operazione$length(opzionale): Il numero di elementi da rimuovere. Se non specificato, verranno rimossi tutti gli elementi dall'$offsetfino alla fine dell'array$replacement(opzionale): Gli elementi da inserire al posto di quelli rimossi. Se non specificato, non verrà inserito alcun elemento
Come funziona la funzione array_splice?
La funzione array_splice opera sull'array di input a partire dall'offset specificato e rimuove il numero di elementi indicato. Se non viene specificata la lunghezza, verranno rimossi tutti gli elementi dall'offset fino alla fine dell'array. Gli elementi rimossi vengono restituiti come array.
Se il parametro $replacement è specificato, la funzione inserisce gli elementi sostitutivi al posto di quelli rimossi. Gli elementi sostitutivi possono essere di qualsiasi tipo di dato, inclusi gli array. Se il parametro $replacement non è specificato, non viene inserito alcun elemento e la funzione si limita a rimuovere gli elementi indicati.
La funzione modifica l'array di input sul posto, il che significa che l'array originale viene modificato dall'operazione. Poiché il primo parametro viene passato per riferimento (&$input), è necessario passare una variabile reale — non è possibile applicare splice direttamente a un array letterale o al risultato di un'altra chiamata di funzione.
Offset e lunghezza negativi
Sia $offset che $length accettano valori negativi, contati dalla fine dell'array:
- Un
$offsetnegativo fa iniziare l'operazione tanti elementi prima della fine.array_splice($arr, -2)rimuove gli ultimi due elementi. - Un
$lengthnegativo interrompe la rimozione tanti elementi prima della fine dell'array, quindi quegli elementi finali vengono conservati.array_splice($arr, 1, -1)rimuove tutto tranne il primo e l'ultimo elemento.
Come vengono influenzate le chiavi
array_splice è progettato per array sequenziali (simili a liste). Dopo l'operazione, le chiavi numeriche vengono sempre rinumerate a partire da 0, mentre le chiavi string vengono preservate. Se hai bisogno di mantenere intatte le chiavi numeriche, array_splice non è lo strumento giusto — usa array_slice() con il flag preserve_keys.
Esempi
Rimozione di elementi da un array
Supponiamo di avere un array di numeri e di voler rimuovere i primi tre elementi. Possiamo usare la funzione array_splice come segue:
PHP Rimozione di elementi da un array usando array_splice
In questo esempio, l'array $numbers verrà modificato e i primi tre elementi verranno rimossi. Gli elementi rimossi saranno restituiti nella variabile $removed. Il valore di $numbers dopo la chiamata alla funzione sarà [4, 5, 6], mentre il valore di $removed sarà [1, 2, 3].
Sostituzione di elementi in un array
Supponiamo di avere un array di nomi e di voler sostituire il terzo e il quarto nome con nuovi nomi. Possiamo usare la funzione array_splice come segue:
PHP Sostituzione di elementi in un array usando array_splice
In questo esempio, l'array $names verrà modificato e il terzo e il quarto nome verranno sostituiti con i nomi 'Alex' e 'Olivia'. Il valore di $names dopo la chiamata alla funzione sarà ['John', 'Mary', 'Alex', 'Olivia', 'Sarah']. Si noti che il numero di elementi sostitutivi non deve necessariamente corrispondere al numero di elementi rimossi — è possibile sostituire due elementi con cinque, o con nessuno.
Inserimento di elementi in un array
Supponiamo di avere un array di lettere e di voler inserire le lettere 'B' e 'C' all'inizio dell'array. Possiamo usare la funzione array_splice come segue:
PHP Inserimento di elementi in un array usando array_splice
In questo esempio, l'array $letters verrà modificato e le lettere 'B' e 'C' verranno inserite all'inizio dell'array. Il valore di $letters dopo la chiamata alla funzione sarà ['B', 'C', 'D', 'E', 'F'].
Utilizzo di offset e lunghezza negativi
Questo esempio rimuove tutto ciò che si trova tra il primo e l'ultimo elemento combinando un offset positivo con una lunghezza negativa:
PHP array_splice con lunghezza negativa
<?php
$items = ['first', 'a', 'b', 'c', 'last'];
$removed = array_splice($items, 1, -1);
print_r($items); // ['first', 'last']
print_r($removed); // ['a', 'b', 'c']
?>Qui $offset è 1 (inizia dopo 'first') e $length è -1 (si ferma un elemento prima della fine, conservando 'last'), quindi i tre elementi centrali vengono rimossi e restituiti.
Funzioni correlate
array_splice si sovrappone a diverse funzioni per array più specifiche. Scegli quella più adatta al caso d'uso — rende le intenzioni più chiare:
array_slice()— estrae una porzione senza modificare l'array originale.array_merge()— combina array in sequenza anziché in una posizione specifica.array_push()/array_unshift()— aggiunge elementi in coda o in testa.array_pop()/array_shift()— rimuove un singolo elemento dalla fine o dall'inizio.
Conclusione
array_splice è il coltellino svizzero per la modifica degli array in PHP: una sola chiamata può rimuovere, sostituire o inserire elementi a qualsiasi offset. Tieni a mente questi punti:
- Modifica l'array di input e restituisce gli elementi rimossi.
- Il numero di elementi sostitutivi è indipendente dal numero di elementi rimossi.
- Le chiavi numeriche vengono rinumerate; le chiavi string vengono conservate.
$offsete$lengthnegativi contano dalla fine dell'array.
Quando hai bisogno di leggere una porzione senza modificare la sorgente, preferisci array_slice().