Funzione array_combine() di PHP
La funzione array_combine() in PHP combina due array in un singolo array associativo, usando i valori del primo come chiavi e quelli del secondo come valori.
La funzione array_combine() in PHP unisce due array semplici in un unico array associativo: prende i valori del primo array come chiavi e i valori del secondo array come valori. È lo strumento ideale quando si dispone di due array paralleli — ad esempio, un elenco di nomi di colonne e un elenco di valori di celle allineati posizione per posizione — e si vuole unirli in una singola mappa chiave/valore.
Questa pagina illustra la sintassi, il significato di ciascun parametro e del valore restituito, le regole da rispettare (lunghezza uguale, tipi di chiave validi) e i pattern più comuni nell'uso reale.
Sintassi
array_combine(array $keys, array $values): array| Parametro | Descrizione |
|---|---|
$keys | Array i cui valori diventano le chiavi del risultato. I suoi valori devono essere chiavi array valide (interi o stringhe). |
$values | Array i cui valori diventano i valori del risultato. |
Valore restituito: un nuovo array associativo costruito abbinando ciascun elemento di $keys con l'elemento di $values nella stessa posizione.
A partire da PHP 8.0, passare array di dimensioni diverse genera un ValueError. In PHP 7.x e versioni precedenti, la funzione restituiva invece false ed emetteva un avviso.
Utilizzo di base
Il caso d'uso classico è trasformare due array paralleli in una singola mappa — qui, nomi di prodotti abbinati ai rispettivi prezzi.
Questo produrrà:
Array
(
[Product 1] => 10
[Product 2] => 20
[Product 3] => 30
)La combinazione avviene per posizione, non per ordinamento o corrispondenza — la prima chiave si abbina al primo valore, la seconda alla seconda, e così via.
Costruire un record da intestazioni e dati
Un uso pratico frequente è ricostruire un record associativo da una riga di intestazione in stile CSV più una riga di dati. È esattamente il modo in cui si potrebbe mappare una riga di un file CSV analizzato.
<?php
$headers = array("id", "name", "email");
$row = array(101, "Ann", "[email protected]");
$record = array_combine($headers, $row);
echo $record["name"] . " <" . $record["email"] . ">";Questo restituisce:
Ann <[email protected]>Regole e avvertenze
Tieni a mente questi vincoli:
- La lunghezza uguale è obbligatoria.
$keyse$valuesdevono avere lo stesso numero di elementi. In PHP 8+ una discrepanza genera unValueError; usacount($keys) === count($values)come guardia se le lunghezze non sono note in anticipo. - Le chiavi devono essere valide. I valori usati come chiavi devono essere interi o stringhe. I float vengono troncati a interi, i boolean vengono convertiti in
0/1enulldiventa la stringa vuota"". - Le chiavi duplicate vengono sovrascritte. Se l'array
$keyscontiene valori ripetuti, le coppie successive sovrascrivono quelle precedenti, quindi il risultato può essere più corto dell'input. Per ottenere prima il conteggio delle chiavi univoche, vediarray_unique(). - Vengono usati solo i valori. Le chiavi originali di entrambi gli array di input vengono ignorate — contano solo i loro valori.
L'esempio seguente mostra una chiave duplicata che comprime due voci in una:
<?php
$keys = array("a", "b", "a");
$values = array(1, 2, 3);
print_r(array_combine($keys, $values));L'ultimo "a" => 3 sovrascrive il primo, quindi l'output è:
Array
(
[a] => 3
[b] => 2
)Funzioni correlate
array_merge()— unisce gli array aggiungendo i valori in coda anziché abbinare chiavi a valori.array_flip()— scambia le chiavi e i valori di un singolo array.array_keys()earray_values()— l'operazione inversa: estrae le chiavi o i valori da un array associativo.
Conclusione
array_combine() è il modo più pulito per unire due array paralleli in un array associativo, abbinandoli elemento per elemento. Ricorda le due regole che creano più problemi: gli array devono avere la stessa lunghezza (altrimenti un ValueError in PHP 8+), e le chiavi duplicate si sovrascrivono silenziosamente.