Menu

PHP array_slice(): estrarre una parte di un array

array_slice($array, $offset, $length) restituisce una copia di una parte di un array senza modificare l'originale. Impara gli offset negativi per gli ultimi elementi, preserve_keys, la paginazione di una lista e la differenza con array_splice.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

array_slice($array, $offset, $length) restituisce un nuovo array con $length elementi a partire dalla posizione $offset. L'array originale non viene modificato. Ometti $length per prendere tutto fino alla fine.

L'offset è una posizione (0 è il primo elemento), non una chiave. Questo conta per gli array associativi e per gli array le cui chiavi non sono 0, 1, 2.

Gli ultimi N elementi con un offset negativo

Un offset negativo conta dalla fine: -1 è l'ultimo elemento, -3 parte da tre elementi prima della fine. Una lunghezza negativa si ferma quel numero di elementi prima della fine.

Chiedere più elementi di quanti ne esistano va bene: array_slice($log, 0, 100) li restituisce tutti e cinque.

Mantenere le chiavi originali con preserve_keys

Le chiavi intere vengono rinumerate da 0 a meno che tu non passi true come quarto argomento. Le chiavi stringa vengono sempre mantenute.

Usa true quando le chiavi hanno un significato, come gli id di un database, e dopo cercherai gli elementi tramite esse.

Paginare un array con array_slice

Mostrare la pagina $page di una lista con $perPage elementi per pagina è una sola slice: l'offset è ($page - 1) * $perPage. Questo esempio stampa una lista HTML con i link alle pagine. Eseguilo e clicca un numero di pagina: lo stesso script viene eseguito di nuovo con $_GET['page'] preso dal link.

La riga max(1, min($pages, ...)) tiene dentro l'intervallo valido un ?page=99 o ?page=-1 scritto a mano. Con un database chiederesti una sola pagina con LIMIT e OFFSET invece di caricare tutte le righe, ma per una lista già in memoria array_slice fa tutto il lavoro.

array_slice vs array_splice

I nomi differiscono di una lettera e fanno cose opposte all'originale. array_slice copia fuori una parte. array_splice taglia la parte dall'array che passi, lo rinumera e restituisce gli elementi rimossi. Può anche inserire dei sostituti dove c'era il taglio.

array_slicearray_splice
Modifica l'originalenosì (per riferimento)
Restituiscela parte selezionatala parte rimossa
Può inserire elementinosì, quarto argomento
Chiavi intererinumerate salvo preserve_keysrinumerate

Per altri modi di eliminare elementi, vedi rimuovere elementi da un array.

Dividere un array in blocchi

Quando ti servono tutte le pagine insieme, per esempio per disporre i prodotti in righe da tre, array_chunk fa le slice ripetute per te.

Cambia il 3 in 2 o 4 ed eseguilo di nuovo. L'ultimo blocco contiene ciò che avanza.

Domande frequenti

Come ottengo i primi N elementi di un array in PHP?

array_slice($arr, 0, 3) restituisce i primi tre elementi. Se l'array ne ha meno di tre, li ottieni tutti senza errori.

Come ottengo gli ultimi N elementi di un array?

Usa un offset negativo: array_slice($arr, -3) restituisce gli ultimi tre elementi. Omettere la lunghezza significa "fino alla fine".

A cosa serve preserve_keys in array_slice?

Di default array_slice rinumera le chiavi intere da 0. Passa true come quarto argomento, array_slice($arr, 2, 3, true), per mantenere le chiavi intere originali. Le chiavi stringa vengono sempre mantenute, con o senza.

Qual è la differenza tra array_slice e array_splice?

array_slice restituisce una copia di una parte dell'array e lascia intatto l'originale. array_splice riceve l'array per riferimento, ne rimuove quella parte (inserendo eventualmente dei sostituti) e restituisce ciò che ha rimosso.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA