Position actuelle: Accueil> Derniers articles> array_flip () Que se passe-t-il lorsqu'une valeur en double est rencontrée?

array_flip () Que se passe-t-il lorsqu'une valeur en double est rencontrée?

M66 2025-05-14

Dans PHP, Array_flip () est une fonction très pratique, et sa fonction est de mettre des tableaux. En d'autres termes, la valeur d'origine deviendra une nouvelle clé, et la clé d'origine deviendra une nouvelle valeur.

Mais la question est: que se passe-t-il s'il y a des valeurs en double dans le tableau d'origine? Comment array_flip () sera-t-il géré? La valeur précédente sera-t-elle écrasée? Cet article analysera ce problème en détail.

Utilisation de base de Array_flip ()

Jetons un coup d'œil à un exemple de base:

 $input = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$flipped = array_flip($input);
print_r($flipped);

Résultat de sortie:

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

C'est OK, car les valeurs sont uniques et peuvent être utilisées en toute sécurité comme clés.

Situation de répétition de la valeur

Regardons un autre exemple, cette fois avec une valeur en double:

 $input = [
    'first'  => 'apple',
    'second' => 'banana',
    'third'  => 'apple'
];

$flipped = array_flip($input);
print_r($flipped);

Résultat de sortie:

 Array
(
    [banana] => second
    [apple] => third
)

Comme vous pouvez le voir, la clé 'First' => 'Apple' est écrasée par 'Third' => 'Apple' après flip. C'est-à-dire que Array_flip () utilisera la dernière valeur d'occurrence comme clé finale , et les éléments de même valeur précédente seront ignorés (remplacé).

Cela devrait être accordé une attention particulière lors du traitement des mégadonnées pour éviter une perte accidentelle de données.

Scénarios d'application pratiques

Supposons que vous développez un système de balises, chaque ID de balise correspondant à un nom de balise:

 $tags = [
    1 => 'php',
    2 => 'javascript',
    3 => 'php'
];

$flipped = array_flip($tags);

Vous voudrez peut-être vérifier l'ID par le nom de la balise, mais à ce moment, «PHP» ne conservera qu'un seul ID ( 3 ) et l'ID 1 sera écrasé. Pour gérer cette situation en toute sécurité, vous devrez peut-être utiliser d'autres méthodes, telles que la traversée manuelle:

 $reverse = [];
foreach ($tags as $id => $name) {
    $reverse[$name][] = $id;
}

Cela permet à tous les ID d'être conservés et devient une relation plusieurs à un.

Conseils: faites attention à la légalité des clés

Étant donné que les clés d'un tableau en PHP doivent être des entiers ou des chaînes , si la valeur est un tableau, un objet ou un nul , etc. qui ne peut pas être utilisé comme clé, array_flip () lancera un avertissement:

 $input = [
    'a' => null,
    'b' => ['nested']
];

$flipped = array_flip($input); // Rapportera une erreur

Résumer

  • array_flip () prendra la valeur en tant que clé et clé comme valeur.

  • Lorsqu'une valeur en double est rencontrée, l'avant sera écrasé à l'arrière.

  • Pour éviter la perte de données, envisagez d'utiliser des méthodes de traitement plus flexibles telles que le regroupement.

  • Notez que la valeur doit être du type qui peut être utilisé comme clé.