In PHP ist Array_flip () eine sehr praktische Funktion, und seine Funktion besteht darin, Arrays einzulegen. Mit anderen Worten, der ursprüngliche Wert wird zu einem neuen Schlüssel, und der ursprüngliche Schlüssel wird zu einem neuen Wert.
Aber die Frage ist: Was ist, wenn es im ursprünglichen Array doppelte Werte gibt? Wie wird Array_flip () behandelt? Wird der vorherige Wert überschrieben? Dieser Artikel wird dieses Problem im Detail analysieren.
Schauen wir uns ein grundlegendes Beispiel an:
$input = [
'a' => 1,
'b' => 2,
'c' => 3
];
$flipped = array_flip($input);
print_r($flipped);
Ausgangsergebnis:
Array
(
[1] => a
[2] => b
[3] => c
)
Dies ist in Ordnung, da die Werte eindeutig sind und sicher als Schlüssel verwendet werden können.
Schauen wir uns ein anderes Beispiel an, diesmal mit einem doppelten Wert:
$input = [
'first' => 'apple',
'second' => 'banana',
'third' => 'apple'
];
$flipped = array_flip($input);
print_r($flipped);
Ausgangsergebnis:
Array
(
[banana] => second
[apple] => third
)
Wie Sie sehen können, wird der Schlüssel 'First' => 'Apple' nach dem Flip durch 'Third' => 'Apple' überschrieben. Das heißt, Array_flip () verwendet den letzten Vorkommenswert als endgültiger Schlüssel , und die vorherigen gleichwertigen Elemente werden ignoriert (überschrieben).
Dies sollte besondere Aufmerksamkeit bei der Bearbeitung von Big Data erhalten, um einen zufälligen Datenverlust zu vermeiden.
Angenommen, Sie entwickeln ein Tag -System, wobei jede Tag -ID einem Tag -Namen entspricht:
$tags = [
1 => 'php',
2 => 'javascript',
3 => 'php'
];
$flipped = array_flip($tags);
Möglicherweise möchten Sie die ID mit dem Tag-Namen untersuchen, aber zu diesem Zeitpunkt wird 'PHP' nur eine ID ( 3 ) und ID 1 überschrieben. Um diese Situation sicher zu bewältigen, müssen Sie möglicherweise andere Methoden verwenden, z. B. manuelle Durchlaufen:
$reverse = [];
foreach ($tags as $id => $name) {
$reverse[$name][] = $id;
}
Dies ermöglicht es allen IDs, beibehalten zu werden und wird zu einer vielen zuen Beziehung.
Da die Schlüssel eines Arrays in PHP Ganzzahlen oder Zeichenfolgen sein müssen, wenn der Wert ein Array, Objekt oder Null usw. ist, wird Array_flip () eine Warnung verwendet:
$input = [
'a' => null,
'b' => ['nested']
];
$flipped = array_flip($input); // Meldet einen Fehler
array_flip () nimmt den Wert als Schlüssel und Schlüssel als Wert an.
Wenn ein doppelter Wert auftritt, wird die Front von der Rückseite überschrieben.
Um Datenverlust zu vermeiden, sollten Sie flexiblere Verarbeitungsmethoden wie die Gruppierung verwenden.
Beachten Sie, dass der Wert vom Typ sein muss, der als Schlüssel verwendet werden kann.