Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

PHP array_flip(): Keys und Werte tauschen

Sie befinden sich: Home > Php Tutorial > PHP array_flip(): Keys und ...

PHP array_flip(): Keys und Werte tauschen
Eintrag am:
20.05.2026
Hits / Besucher:
16
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
 
Beschreibung

Manchmal liegt ein Array vor, in dem die Werte als Schlüssel weit besser zu gebrauchen wären als die Schlüssel selbst. Genau diese Umkehrung erledigt array_flip() in einem einzigen Aufruf. Was wie eine Spielerei aussieht, ist in der Praxis ein bekannter Performance-Hack für Lookups und spätestens bei großen Listen ein echter Vorteil gegenüber in_array().

Was macht PHP array_flip()?

Wer in PHP mit assoziativen Arrays arbeitet, kommt früher oder später in eine Situation, in der die Werte als Schlüssel und die Schlüssel als Werte interessanter sind. Genau dafür gibt es PHP array_flip: Die Funktion nimmt ein Array entgegen und gibt ein neues Array zurück, in dem Schlüssel und Werte vertauscht sind. Aus ['rot' => 'red'] wird so ['red' => 'rot']. Dieses einfache Beispiel zeigt das Grundprinzip in einer Zeile.

Illustration zum Tutorial: PHP array_flip(): Keys und Werte tauschen

Bevor die Lookup-Optimierung gegenüber in_array und die typischen Stolperfallen beleuchtet werden, lohnt ein kurzer Blick auf den eigentlichen Mehrwert dieser Tausch-Operation.

So einfach wie das klingt, so wertvoll ist die Funktion in der Praxis. PHP array_flip() ist nicht nur ein Spielzeug für Konvertierungen, sondern eine echte Performance-Optimierung, wenn es um Lookups geht. Statt mit in_array() jedes Element zu durchsuchen, lässt sich nach dem Tausch in O(1) mit isset() prüfen, ob ein Wert vorhanden ist. Das Tutorial zeigt diese Anwendung Schritt für Schritt und entschärft die typischen Stolperfallen mit doppelten Werten und falschen Typen.

Syntax und Rückgabewert

Die Signatur ist die schlankste, die eine Array-Funktion in PHP haben kann. PHP array_flip() erwartet genau ein Array und gibt das vertauschte Array zurück.

<?php

array_flip(array $array): array

Der Rückgabewert ist immer ein Array. Wenn das Eingabe-Array Werte enthält, die keine gültigen Array-Schlüssel sein können, wirft PHP eine Warnung und überspringt den entsprechenden Eintrag. Gültige Schlüssel sind in PHP nur Strings oder Integer. Floats werden zu Integer gecastet, Booleans zu 0 oder 1. Diese Typkonvertierung ist ein subtiler Punkt, der weiter unten ein eigenes Beispiel bekommt.

Erstes Beispiel mit print_r

Zum Einstieg ein kleines Farben-Array, das die englischen Namen als Werte führt. Nach dem Aufruf von PHP array_flip() sind die englischen Namen die Schlüssel, und die deutschen Bezeichner stehen als Werte.

<?php

$farben = ['rot' => 'red', 'gruen' => 'green', 'blau' => 'blue'];

print_r($farben);
/* Array ( [rot] => red [gruen] => green [blau] => blue ) */

print_r(array_flip($farben));
/* Array ( [red] => rot [green] => gruen [blue] => blau ) */

Das Ergebnis ist ein neues Array. Das Original bleibt unverändert, weil PHP array_flip() das Array nicht per Referenz übernimmt. Wer die Vertauschung in-place braucht, weist das Resultat einfach derselben Variable zu. Im nächsten Schritt geht es um die wichtigste produktive Anwendung dieser Funktion.

Lookup-Optimierung statt in_array

Die häufigste produktive Anwendung von PHP array_flip() ist die Beschleunigung von Membership-Prüfungen. in_array() durchsucht ein Array linear, die Laufzeit wächst also mit der Größe der Liste. Wer den Lookup häufig wiederholt, gewinnt durch den Tausch zu einer assoziativen Map deutlich an Geschwindigkeit, weil isset() in O(1) arbeitet.

<?php

$erlaubt = ['admin', 'editor', 'leser', 'gast', 'moderator'];
$lookup = array_flip($erlaubt);

$rolle = 'editor';
if (isset($lookup[$rolle])) {
echo 'Rolle erlaubt';
}

/* Vergleich, langsam bei grossen Listen:
if (in_array($rolle, $erlaubt, true)) { ... } */

Bei wenigen Einträgen ist der Unterschied vernachlässigbar, bei Listen mit tausenden Einträgen aber dramatisch. Wichtig ist, den Tausch nur einmal zu Beginn der Schleife zu machen und nicht bei jeder Iteration. Wer die erlaubten Werte aus einer Konstante oder einem Cache lädt, kann die Lookup-Map gleich vorab anlegen.

Stolperfalle doppelte Werte

Eine subtile Falle entsteht, wenn das Eingabe-Array doppelte Werte enthält. Da ein Array nur eindeutige Schlüssel haben kann, überschreibt jeder spätere Eintrag den früheren. Die Konsequenz ist Datenverlust, wenn man das nicht vorher berücksichtigt.

<?php

$daten = ['a' => 1, 'b' => 1, 'c' => 2];
print_r(array_flip($daten));
/* Array ( [1] => b [2] => c ) */

Im obigen Beispiel ist der ursprüngliche Schlüssel 'a' mit dem Wert 1 verloren, weil er von 'b' => 1 überschrieben wurde. Wer doppelte Werte haben kann, sollte vor dem Aufruf eine Prüfung mit array_count_values() durchführen oder die Daten anders modellieren. In Whitelist-Szenarien sind doppelte Werte allerdings unkritisch, weil sie sowieso nur einmal als Schlüssel erscheinen sollen.

Erlaubte Wert-Typen und Warning

PHP array_flip() akzeptiert nur skalare Werte als künftige Schlüssel, also Strings und Integer. Float-Werte werden zu Integer gecastet, Booleans zu 0 oder 1. Werte vom Typ Array oder Objekt werden übersprungen, und PHP wirft ein E_WARNING.

<?php

$daten = [
'a' => 'x',
'b' => ['y'], /* Array, nicht erlaubt */
'c' => 'z',
'd' => 3.7, /* wird zu Integer 3 */
'e' => true, /* wird zu 1 */
];

$flip = @array_flip($daten);
print_r($flip);
/* Array ( [x] => a [z] => c [3] => d [1] => e ) */

Das @ unterdrückt im Beispiel das Warning, sollte im Produktiv-Code aber vermieden werden. Besser ist es, die Daten vor dem Aufruf mit is_scalar() zu filtern oder die Quelle so zu modellieren, dass nur skalare Werte ankommen. Auch der Cast von Float zu Integer kann in Reporting-Szenarien zu unerwarteten Kollisionen führen, wenn 3.0 und 3.7 plötzlich denselben Schlüssel 3 belegen.

flowchart TD
    A[Eingabe-Array] --> B{Werte skalar?}
    B -->|Ja| C[Wert wird Schluessel]
    B -->|Nein| D[Warning, Eintrag uebersprungen]
    C --> E{Wert doppelt?}
    E -->|Nein| F[Eintrag uebernehmen]
    E -->|Ja| G[Letzter gewinnt]

Multidimensionale Arrays

PHP array_flip() arbeitet nur auf flachen Arrays. Wer ein verschachteltes Array vertauschen will, kombiniert die Funktion mit array_map() und ruft den Tausch für jede Untergruppe einzeln auf. Diese Pipeline ist sehr knapp und vermeidet eine geschachtelte Schleife.

<?php

$gruppen = [
'team1' => ['anna' => 1, 'ben' => 2],
'team2' => ['cara' => 3, 'dirk' => 4],
];

$flipped = array_map('array_flip', $gruppen);
print_r($flipped);
/* Array (
[team1] => Array ( [1] => anna [2] => ben )
[team2] => Array ( [3] => cara [4] => dirk )
) */

Das Pattern funktioniert beliebig tief verschachtelt, allerdings nur mit array_map auf der jeweils richtigen Ebene. Wer wirklich rekursiv tauschen muss, schreibt eine kleine Helper-Funktion, die jeden Knoten besucht und nur die Blätter vertauscht.

Vergleich array_flip, array_search, array_combine

Im Code-Bestand großer Projekte gibt es drei verwandte Funktionen, die oft verwechselt werden. PHP array_flip() vertauscht Schlüssel und Werte eines Arrays. array_search() sucht den Schlüssel zu einem bestimmten Wert. array_combine() baut aus zwei Arrays ein neues, in dem das erste die Schlüssel und das zweite die Werte liefert.

Wer einmalig den Schlüssel zu einem Wert sucht, nimmt array_search. Wer dieselbe Suche oft wiederholt, baut sich mit array_flip eine Lookup-Map. Wer aus zwei Arrays ein neues bauen will, nimmt array_combine. Diese drei Werkzeuge ergänzen sich und decken zusammen die meisten Mapping-Aufgaben in PHP ab.

Best Practices im Code-Review

Im Code-Review lohnt es sich, drei Punkte zu prüfen. Erstens, ob die Werte des Eingabe-Arrays garantiert skalar sind. Wenn nicht, gehört ein Filter mit array_filter('is_scalar') davor. Zweitens, ob doppelte Werte vorkommen können und ob das gewollt ist. Drittens, ob die Lookup-Map nur einmal gebaut wird und nicht in jeder Schleifeniteration neu. Wer diese drei Punkte verinnerlicht, vermeidet die typischen Bugs mit PHP array_flip() im Junior-Code.

Wer ein Performance-Problem mit in_array() hat und auf array_flip plus isset umstellen will, sollte das mit einem kleinen Benchmark belegen. Bei Listen unter 50 Einträgen ist der Unterschied selten messbar. Bei Listen mit mehreren tausend Werten dagegen sind Faktor-100-Verbesserungen realistisch.

Fazit

PHP array_flip() ist eine kompakte Funktion, die Schlüssel und Werte eines Arrays tauscht und dabei eine sehr nützliche Performance-Optimierung ermöglicht. Sie glänzt vor allem als Bauer von Lookup-Maps, ersetzt langsame in_array-Suchen durch schnelle isset-Prüfungen und ist gleichzeitig eine bequeme Helper-Funktion für kleinere Konvertierungen. Wer doppelte Werte im Auge behält und nur skalare Werte übergibt, hat mit array_flip() einen zuverlässigen Helfer im Werkzeugkasten.

 

Tags:

 

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.