La Guida Completa alla Funzione array_pad di PHP
Scopri come usare array_pad in PHP per garantire una lunghezza fissa agli array, con esempi pratici e casi limite spiegati chiaramente.
Gli array sono fondamentali in quasi ogni programma PHP e a volte hai bisogno che un array abbia una lunghezza garantita — riempito con valori segnaposto quando è troppo corto. La funzione array_pad di PHP fa esattamente questo: restituisce una copia di un array espansa fino a una dimensione target, con un valore a tua scelta che riempie i nuovi slot. Questa guida copre la sintassi, come il segno della dimensione controlla la direzione del riempimento, i comportamenti che possono sorprendere, e esempi eseguibili.
Cosa Fa la Funzione array_pad
array_pad restituisce un nuovo array riempito fino a una lunghezza specificata. Due regole governano il suo comportamento:
- Se la dimensione richiesta è maggiore dell'input, vengono aggiunte copie del valore di riempimento — alla fine quando la dimensione è positiva, all'inizio quando è negativa.
- Se la dimensione richiesta è minore o uguale alla lunghezza attuale dell'input, l'array viene restituito invariato.
array_padnon rimuove mai elementi.
L'array originale non viene modificato; si lavora con il valore restituito.
Sintassi della Funzione array_pad
array_pad(array $array, int $length, mixed $value): array$array: L'array di input che vuoi riempire. Non viene modificato.$length: La dimensione target. Un valore positivo riempie a destra (fine); un valore negativo riempie a sinistra (inizio). Il numero di elementi aggiunti èabs($length) - count($array).$value: Il valore usato per ogni elemento aggiunto. Può essere di qualsiasi tipo, incluso un altro array.
Casi d'Uso della Funzione array_pad
La funzione array_pad è utile quando vuoi:
- Garantire che un array abbia almeno N elementi prima di iterare su posizioni fisse.
- Allineare a destra o a sinistra i dati riempiendo il lato opposto.
- Completare una griglia, un modulo o una riga di tabella di dimensione fissa con segnaposto predefiniti.
Esempi della Funzione array_pad
Ecco alcuni esempi di come la funzione array_pad può essere utilizzata in scenari reali:
Esempio 1: Riempimento alla Fine (Dimensione Positiva)
Output:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => 0
)L'array di input $numbers ha 3 elementi e la dimensione target è 5, quindi 5 - 3 = 2 zeri vengono aggiunti alla fine.
Esempio 2: Riempimento all'Inizio (Dimensione Negativa)
Output:
Array
(
[0] => black
[1] => black
[2] => red
[3] => green
[4] => blue
)La dimensione -5 è negativa, quindi il riempimento avviene all'inizio. I 3 colori originali mantengono il loro ordine e abs(-5) - 3 = 2 copie di 'black' vengono anteposte. Da notare che le chiavi vengono reindicizzate a partire da 0 indipendentemente dalla direzione.
Esempio 3: Riempimento di un Array con un Valore Specifico
Output:
Array
(
[0] => a
[1] => b
[2] => c
[3] => z
[4] => z
[5] => z
[6] => z
)L'input ha 3 elementi e la dimensione target è 7, quindi 7 - 3 = 4 copie di 'z' vengono aggiunte.
Comportamenti Particolari e Casi Limite
Alcuni comportamenti possono sorprendere:
- Non riduce mai un array. Se
abs($length)è minore o uguale al conteggio attuale, l'array viene restituito invariato. Per rimuovere elementi, usaarray_sliceoarray_splice. - Le chiavi string vengono mantenute, ma il riempimento è sempre numerico. Quando si riempie un array associativo, le chiavi string esistenti vengono preservate e i nuovi elementi ricevono chiavi intere sequenziali:
<?php
$scores = array('math' => 90, 'science' => 85);
print_r(array_pad($scores, 4, 0));
?>Array
(
[math] => 90
[science] => 85
[0] => 0
[1] => 0
)- Il valore di riempimento può essere di qualsiasi tipo. Passare un array come
$valueinserisce copie dell'intero array, il che è utile per costruire griglie di righe predefinite. - Il riempimento è fisso, non interpolato. Ogni nuovo slot riceve esattamente lo stesso
$value. Se hai bisogno di un riempimento generato o sequenziale, costruiscilo conarray_fillorange().
Funzioni Correlate
array_fill— crea un nuovo array riempito interamente con un valore.array_merge— combina array invece di riempirne uno.array_sliceearray_splice— estrae o rimuove porzioni di un array.array_chunk— divide un array riempito in gruppi di dimensione fissa.
Conclusione
array_pad è il modo più rapido per garantire che un array abbia una lunghezza specificata senza scrivere un ciclo. Ricorda le due regole che ne governano il comportamento: una dimensione positiva riempie la fine, una dimensione negativa riempie l'inizio, e una dimensione pari o inferiore alla lunghezza attuale lascia l'array invariato. Con questi concetti in mente — più la gestione delle chiavi e i casi limite descritti sopra — puoi ricorrere a array_pad ogni volta che hai bisogno di array di dimensione fissa e prevedibile nei tuoi progetti PHP.