W3docs

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
ParametroDescrizione
$keysArray i cui valori diventano le chiavi del risultato. I suoi valori devono essere chiavi array valide (interi o stringhe).
$valuesArray 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.

php— editable, runs on the server

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:

Regole e avvertenze

Tieni a mente questi vincoli:

  • La lunghezza uguale è obbligatoria. $keys e $values devono avere lo stesso numero di elementi. In PHP 8+ una discrepanza genera un ValueError; usa count($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/1 e null diventa la stringa vuota "".
  • Le chiavi duplicate vengono sovrascritte. Se l'array $keys contiene 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, vedi array_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() e array_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.

Esercitazione

Pratica
Qual è la funzione principale di array_combine() in PHP?
Qual è la funzione principale di array_combine() in PHP?
Was this page helpful?