Comprendre la fonction PHP array_flip
La fonction PHP array_flip échange les clés et les valeurs d'un array. Découvrez la syntaxe, les cas d'usage et les fonctions associées.
La fonction PHP array_flip échange les clés et les valeurs d'un array : chaque clé devient une valeur, et chaque valeur devient une clé. Elle retourne un nouvel array et ne modifie jamais celui que vous lui passez. Cette page couvre la syntaxe, un exemple exécutable, la gestion des doublons et des types de clés, les cas d'usage courants et les fonctions associées à connaître.
Syntaxe
array_flip(array $array): array$array— l'array d'entrée. Ses valeurs doivent être des clés valides, c'est-à-dire qu'elles ne peuvent être que des entiers ou des string. Tout autre type de valeur (boolean, float, array, object,null) déclenche un avertissement et est ignoré dans le résultat.- Valeur de retour — un nouvel array avec les paires clé/valeur inversées.
Comment utiliser la fonction PHP array_flip
Passez votre array à la fonction et elle retourne l'array inversé :
Exemple PHP d'utilisation de la fonction array_flip
Dans cet exemple, $flipped_array contiendra les éléments suivants :
Array
(
[1] => a
[2] => b
[3] => c
)Les clés string "a", "b", "c" sont désormais les valeurs, et les entiers 1, 2, 3 sont désormais les clés.
Avantages de l'utilisation de la fonction PHP array_flip
L'utilisation de array_flip dans votre code PHP présente plusieurs avantages :
- Simplification du code :
array_flippeut simplifier votre code en éliminant la nécessité d'échanger manuellement les clés et les valeurs d'un array. - Amélioration de la lisibilité : les arrays inversés sont souvent plus faciles à lire et à comprendre, notamment lorsque vous travaillez avec de grands arrays ou des arrays contenant des structures de données complexes.
- Exécution optimisée :
array_flipest une fonction native optimisée pour cette tâche, généralement plus performante que les boucles manuelles d'échange clé-valeur.
Construire une table de recherche rapide
L'utilisation la plus idiomatique de array_flip consiste à transformer une liste de valeurs en un ensemble que vous pouvez interroger avec isset(). Les clés étant hachées, une vérification isset() sur un array inversé est O(1) — bien plus rapide que de parcourir la liste avec in_array() sur un grand jeu de données.
<?php
$allowed = ["admin", "editor", "viewer"];
$lookup = array_flip($allowed);
var_dump(isset($lookup["editor"])); // present
var_dump(isset($lookup["guest"])); // missing
?>Résultat :
bool(true)
bool(false)Gestion des valeurs dupliquées
Lorsque deux clés de l'array original partagent la même valeur, le résultat inversé ne peut contenir qu'une seule entrée pour cette valeur — c'est donc la dernière clé qui l'emporte et la précédente est supprimée :
<?php
$colors = ["red", "green", "blue", "green"];
print_r(array_flip($colors));
?>Résultat :
Array
(
[red] => 0
[green] => 3
[blue] => 2
)L'index 1 (le premier "green") est perdu car l'index 3 l'a écrasé. Si vous avez besoin de compter combien de fois chaque valeur apparaît, utilisez array_count_values() ; pour supprimer les doublons tout en conservant l'ordre, utilisez array_unique().
Cas d'usage courants
- Construction d'ensembles de recherche à partir d'une liste d'identifiants uniques ou de valeurs autorisées pour des vérifications
isset()rapides. - Inversion d'un dictionnaire ou d'un mapping (par ex.
name => idenid => name). - Réorganisation des éléments d'un array en tant que clés tout en mémorisant leur position d'origine.
Limitations et pièges
- Valeurs dupliquées : seule la dernière clé pour une valeur répétée survit ; les clés précédentes sont perdues (voir ci-dessus).
- Types de valeurs invalides : les valeurs qui ne sont pas de type
intoustringne peuvent pas devenir des clés. Elles émettentWarning: Can only flip string and integer valueset sont ignorées, tandis que les paires valides sont tout de même inversées. - Clés string numériques : lorsqu'une valeur devient une clé, PHP applique les règles normales des clés d'array — une string numérique comme
"42"devient l'entier42.
Fonctions associées
array_reverse()— inverse l'ordre des éléments (souvent confondu avec l'inversion des clés/valeurs).array_keys()etarray_values()— extraient uniquement les clés ou uniquement les valeurs.array_search()— trouve la clé correspondant à une seule valeur sans inverser tout l'array.array_combine()— construit un array en associant un array de clés à un array de valeurs.
Pour approfondir les arrays en général, consultez PHP Arrays et Associative Arrays.
Conclusion
array_flip échange les clés et les valeurs d'un array en un seul appel optimisé. Elle est particulièrement utile lorsque vous avez besoin d'un ensemble de recherche isset() rapide ou que vous souhaitez inverser un mapping — gardez simplement à l'esprit que les valeurs doivent être des entiers ou des string, et que les valeurs dupliquées se réduisent à leur dernière clé.