W3docs

Comprendere la funzione PHP array_flip

La funzione PHP array_flip scambia chiavi e valori di un array in modo semplice ed efficiente. Scopri sintassi, esempi e casi d'uso.

La funzione PHP array_flip scambia le chiavi e i valori di un array: ogni chiave diventa un valore e ogni valore diventa una chiave. Restituisce un nuovo array e non modifica mai quello passato come argomento. Questa pagina tratta la sintassi, un esempio eseguibile, la gestione dei duplicati e dei tipi di chiave, i casi d'uso comuni e le funzioni correlate utili da conoscere.

Sintassi

array_flip(array $array): array
  • $array — l'array di input. I suoi valori devono essere chiavi valide, ovvero possono essere solo interi o string. Qualsiasi altro tipo di valore (boolean, float, array, object, null) genera un avviso e viene ignorato nel risultato.
  • Valore restituito — un nuovo array con le coppie chiave/valore invertite.

Come usare la funzione PHP array_flip

Passa il tuo array alla funzione e questa restituisce l'array con i valori invertiti:

Esempio PHP di utilizzo della funzione array_flip

php— editable, runs on the server

In questo esempio, $flipped_array conterrà quanto segue:

Array
(
    [1] => a
    [2] => b
    [3] => c
)

Le chiavi string "a", "b", "c" sono ora i valori, e gli interi 1, 2, 3 sono ora le chiavi.

Vantaggi dell'uso della funzione PHP array_flip

Ci sono diversi vantaggi nell'usare array_flip nel codice PHP. Tra questi:

  • Semplificazione del codice: array_flip può aiutare a semplificare il codice eliminando la necessità di scambiare manualmente chiavi e valori in un array.
  • Miglioramento della leggibilità: gli array invertiti sono spesso più facili da leggere e comprendere, specialmente quando si lavora con array di grandi dimensioni o che contengono strutture dati complesse.
  • Esecuzione ottimizzata: array_flip è una funzione integrata ottimizzata per questo compito, che generalmente supera in velocità i cicli manuali di scambio chiave-valore.

Costruire una tabella di ricerca veloce

L'uso più idiomatico di array_flip è trasformare un elenco di valori in un insieme verificabile con isset(). Poiché le chiavi sono indicizzate tramite hash, un controllo isset() su un array invertito è O(1) — molto più veloce della scansione dell'elenco con in_array() su un dataset di grandi dimensioni.

<?php

$allowed = ["admin", "editor", "viewer"];
$lookup  = array_flip($allowed);

var_dump(isset($lookup["editor"])); // present
var_dump(isset($lookup["guest"]));  // missing

?>

Output:

bool(true)
bool(false)

Gestione dei valori duplicati

Quando due chiavi nell'array originale condividono lo stesso valore, il risultato invertito può avere una sola voce per quel valore — quindi vince l'ultima chiave e quella precedente viene eliminata:

<?php

$colors = ["red", "green", "blue", "green"];
print_r(array_flip($colors));

?>

Output:

Array
(
    [red] => 0
    [green] => 3
    [blue] => 2
)

L'indice 1 (il primo "green") viene perso perché l'indice 3 lo ha sovrascritto. Se invece hai bisogno di contare quante volte appare ciascun valore, usa array_count_values(); per rimuovere i duplicati mantenendo l'ordine, usa array_unique().

Casi d'uso comuni

  • Costruire insiemi di ricerca da un elenco di ID univoci o valori consentiti per controlli rapidi con isset().
  • Invertire un dizionario o una mappatura (es. name => id in id => name).
  • Riorganizzare gli elementi di un array come chiavi ricordando la loro posizione originale.

Limitazioni e avvertenze

  • Valori duplicati: sopravvive solo l'ultima chiave per un valore ripetuto; le chiavi precedenti vengono perse (vedi sopra).
  • Tipi di valore non validi: i valori che non sono int o string non possono diventare chiavi. Emettono Warning: Can only flip string and integer values e vengono ignorati, mentre le coppie valide vengono comunque invertite.
  • Chiavi stringa numeriche: quando un valore diventa una chiave, PHP applica le normali regole per le chiavi degli array — una stringa numerica come "42" diventa l'intero 42.

Funzioni correlate

  • array_reverse() — inverte l'ordine degli elementi (spesso confuso con l'inversione di chiavi/valori).
  • array_keys() e array_values() — estraggono solo le chiavi o solo i valori.
  • array_search() — trova la chiave per un singolo valore senza invertire l'intero array.
  • array_combine() — costruisce un array abbinando un array di chiavi a un array di valori.

Per approfondire gli array in generale, consulta PHP Arrays e Associative Arrays.

Conclusione

array_flip scambia le chiavi e i valori di un array in una singola chiamata ottimizzata. Risulta particolarmente utile quando hai bisogno di un insieme di ricerca rapido con isset() o vuoi invertire una mappatura — ricorda solo che i valori devono essere interi o string, e che i valori duplicati si riducono all'ultima chiave.

Esercizio

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