behance github medium

Array anhand eines Array mit den Keys zuschneiden

5. August 2016 by Alexander Bogomolov

Das ist eine Anforderung, zu der man nur sehr schwierig einen Titel findet. Will man aus einem assoziativen Array nur die Werte auslesen, dessen Keys in einem Array befinden, so hat man mehrere Ansätze. Grundsätzlich lässt sich das meiste mit foreach-Schleifen lösen. Für die meisten Anwendungsfälle stellt PHP jedoch fertige Funktionen bereit.


Die Ausgangslage ist relativ einfach: Ich habe eine Array das zu filtern wäre, genannt $haystack, und ein Array mit den gesuchten Keys, genannt $needle.

Variante 1

Der Einfachste und für die meisten wahrscheinlich auch der verständlichste Weg wäre es das Array $haystack in einer foreach-Schleife durchzugehen und zu prüfen, ob der Key in $needle vorhanden ist. Ist das der Fall, dann speichert man den Wert in ein neues Array.

Variante 2

Kürzer ist jedoch die Verwendung der array_intersect_key() Funktion. Diese ermittelt die Schnittmenge mehrerer Arrays, indem sie die Keys vergleicht. Um diese Funktion nutzen zu können, muss das $needle Array vertauscht werden. Also die Keys zu Werten und Werte zu Keys.

Was ist jetzt zu bevorzugen?

Beide Möglichkeiten haben ihre Vor- und Nachteile. Die Variante mit foreach ist deutlich einfacher zu verstehen, auch wenn man mit PHP sonst nicht sonderlich vertraut ist. Die Variante mit array_intersect_key() ist in meinem Test gut 25% schneller.

foreach() vs array_intersect_key()

Related Posts


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.