Needle/Haystack Übersicht

Ich schreibe bald eine Klausur (so richtig auf Papier). Und da sind keine Handbücher oder Funktionsreferenzen erlaubt. Das befinde ich jetzt erstmal für großen Schwachsinn, weil es total an der Realität vorbeigeht. So. Nun habe ich mal eine kleine Übersicht erstellt, wie die Needle/Haystack-Reihenfolge bei den meistgenutzten Funktionen ist. Durch die Hilfe der IDE ist man ja nicht gezwungen, sich das merken zu müssen. Naja, beim stöbern im PHP Handbuch ist mir nun aufgefallen, dass mein Gefühl der total willkürlichen Reihenfolge gar nicht zutreffend war ;-). Wenn man sich mal ein paar PHP-Basher anhört, ist das ja auch das erste Argument. Schauen wir einfach mal:

String-Funktionen

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Die Reihenfolge gilt entsprechend auch für die iconv_ und mb_ – Funktionen.

Array-Funktionen

bool array_key_exists ( mixed $needle , array $haystack )
mixed array_search ( mixed $needle , array $haystack [, bool $strict ] )
bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

Was fällt auf? Bei den String-Funktionen befindet sich der $haystack immer an erster Stelle, bei den Array-Funktionen kommt die $needle immer zuerst. Also gar nicht so tragisch. Wenn man sich jetzt noch eine anständige Eselsbrücke bildet, kann man sich das sehr gut behalten.

Was man sich merken muss, ist dann bloß noch ob Unterstrich oder nicht: in_array vs. strpos. Aber das hat man eh drauf. Also alles garnicht so schlimm wie immer propagiert wird.