Aktueller Standort: Startseite> Neueste Artikel> Warum verliert Array_flip () Daten? Probleme, die durch doppelte Parsingwerte verursacht werden

Warum verliert Array_flip () Daten? Probleme, die durch doppelte Parsingwerte verursacht werden

M66 2025-05-14

Bei der PHP -Programmierung ist Array_flip () eine häufig verwendete Funktion, die Schlüssel und Werte eines Arrays kombinieren kann. Viele Entwickler können jedoch auf das Problem des "Datenverlusts" während der Verwendung stoßen, insbesondere wenn es im Array doppelte Werte gibt. Was ist denn los? In diesem Artikel wird das Verhalten von Array_flip () im Detail erläutert und Beispiele verwenden, um die Grundsätze dahinter zu verstehen.

1. Was ist Array_flip ()?

Array_flip () ist eine integrierte Array-Funktion in PHP, die zum Austausch von Schlüssel und Werten in einem Array verwendet wird. Die grundlegende Syntax ist wie folgt:

 array_flip(array $array): array

Seine Funktion besteht darin, jeden Schlüssel und jeden Wert im Eingabearray zu vergleichen, der ursprüngliche Wert wird zum neuen Schlüssel und der ursprüngliche Schlüssel zum neuen Wert.

Beispiel:

 $input = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'cherry'
];

$result = array_flip($input);

print_r($result);

Die Ausgabe ist:

 Array
(
    [apple] => a
    [banana] => b
    [cherry] => c
)

Es ist ersichtlich, dass die Schlüssel und Werte ohne Probleme erfolgreich erwidert wurden.

2. Wo das Problem auftritt: doppelte Werte

Was passiert mit Array_flip (), wenn es im ursprünglichen Array doppelte Werte gibt?

Schauen wir uns ein Beispiel an:

 $input = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'apple'
];

$result = array_flip($input);

print_r($result);

Ausgabe:

 Array
(
    [banana] => b
    [apple] => c
)

Hier gibt es ein wichtiges Detail: Es stellt sich heraus, dass Apple die Werte von A und C ist, aber am Ende behält es nur das C => Apple -Paar bei . Dies bedeutet, dass a => Apfel weggeworfen wird.

3. Warum passiert das?

In PHP sind die Schlüssel des Arrays einzigartig. Wenn Array_flip () den Wert in einen Schlüssel verwandelt, tritt ein "Schlüsselkonflikt" auf, wenn mehrere Werte gleich sind. PHP überschreibt den vorherigen Wert mit dem nachfolgenden Wert , was zu Datenverlust führt.

Fortsetzung des Beispiels ist der Prozess der Ausführung von Array_flip () wie folgt:

  1. A => AppleApple => a

  2. b => bananebanane => b

  3. C => AppleApple => C ( Vorheriger Apple => a )

Daher wird im Endergebnis nur Apple => C beibehalten, und der ursprüngliche Apple => A wird überschrieben.

4. Wie kann man Datenverlust vermeiden?

Wenn Sie das Array "Taste-Swap", aber den Datenverlust nicht akzeptieren müssen, können Sie die folgenden Lösungen berücksichtigen:

Methode 1: Verarbeiten Sie doppelte Werte manuell verarbeiten

Verwenden Sie den Wert als Schlüssel im Array, und der Wert wird zu einem Array, wobei alle Originalschlüssel beibehalten.

 $input = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'apple'
];

$result = [];

foreach ($input as $key => $value) {
    if (!isset($result[$value])) {
        $result[$value] = [];
    }
    $result[$value][] = $key;
}

print_r($result);

Ausgabe:

 Array
(
    [apple] => Array
        (
            [0] => a
            [1] => c
        )

    [banana] => Array
        (
            [0] => b
        )
)

Dies vermeidet nicht nur den Datenverlust, sondern ermöglicht es Ihnen auch, klar zu erkennen, welche Schlüssel demselben Wert entsprechen.

5. Dinge in realen Szenen zu beachten

Zum Beispiel bei der Verarbeitung einer Konfigurationstabelle das Datenbankfeld dem Feld Front-End-Feld zuordnen:

 $mapping = [
    'username' => 'user',
    'email' => 'user',
    'address' => 'location'
];

$flipped = array_flip($mapping);

print_r($flipped);

Ausgabe:

 Array
(
    [user] => email
    [location] => address
)

Sie haben vielleicht gehofft, dass sowohl User => Benutzername als auch user => E -Mail reserviert sind, aber tatsächlich bleibt nur Benutzer => E -Mails und die anderen behandelt. In diesem Fall wird empfohlen, die oben erwähnte "Wert für Array" zu verwenden, um logische Fehler zu vermeiden.

6. Zusammenfassung

  • array_flip () kombiniert Schlüssel und Werte;

  • Wenn es im ursprünglichen Array doppelte Werte gibt, tritt ein "Schlüsselkonflikt" auf.

  • Die Array -Tasten in PHP müssen eindeutig sein, sodass letztere die vorherige überschreiben, was zu Datenverlust führt.

  • Der Wert kann manuell in einen Schlüssel umgewandelt werden und der ursprüngliche Schlüssel wird in einem Array gespeichert, um alle Informationen zu erhalten.