Hallo Phillip,
selbst bei 2 elementen im Array ist der die in_array Version
schon um den Faktor 10 langsamer als ein Vergleich mit einem
if
Wie kommst du denn zu dem Faktor 10? Das in_array auf kleine Arrays theoretisch langsamer ist, dagegen kein Wiederspruch jedoch liegen die Unterschiede im Mikrosekunden-Bereich und zwar 6 Stellen hinter dem Komma (bei 10 Elementen im Array). Steigt die Länge des Arrays auf z.B. 1000 oder 10000 ist in_array durchaus unperformant, jedoch wenn man so große Arrays hat, hat man vermutlich prinzipiell was verkehrt gemacht.
Warum macht es evtl. Sinn in_array zu benutzen? Bleiben wir bei den 10 Elementen und gehen davon aus, es handle sich nicht um fortlaufende Monate (dafür hatte ja Ingo schon eine elegande Lösung gepostet). Wie sehe der Code nun mit 10 Oder-Verknüpfungen aus? Während in_array immer noch der unveränderte Code wäre.
Wie du siehst liegt es in der Entscheidung des Entwicklers, zu entscheiden wann er was benutzt und wann er es besser bleiben lässt. Selbst bei 50 Einträgen ist die Performance kaum messbar, der Code aber besser lesbar. Und ehrlich gesagt, kann ich mich nicht daran erinnern, jemals ein Array > 50 gehabt zu haben, da ich allgemein versuche die Last der Datenbank gering zu halten und meist nicht mehr als 20-50 Objekte auf einmal auszulesen.
Am Ende ist immer die Datenbank die Performancebremse, da kann man noch so pedantisch php programmieren.
Gruß XXD