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
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_flippuò 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 => idinid => 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
intostringnon possono diventare chiavi. EmettonoWarning: Can only flip string and integer valuese 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'intero42.
Funzioni correlate
array_reverse()— inverte l'ordine degli elementi (spesso confuso con l'inversione di chiavi/valori).array_keys()earray_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.