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.

Weitere Posts:

Dieser Beitrag wurde unter php, Quicktips, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

8 Antworten auf Needle/Haystack Übersicht

  1. Wenn ich mich recht entsinne, sind die Reihenfolgen der Parameter den Funktionsvorbildern aus der C Standardlibrary geschuldet – man wollte eben deren Signatur 1:1 übernehmen, um niemanden zu verwirren, der von C auf PHP migriert.

    Insofern eigentlich eine gute Absicht mit verschmerzbaren, aber eben sehr leicht bashbaren Nebenwirkungen. BTW: echte Klausuren über PHP zu schreiben, finde ich eigentlich echt ne gute Sache. Praxisausrichtung ahoi.

    1. david sagt:

      Mir gings dadrum dass es keine Praxisrelevanz hat, wenn ich die Parameterreihenfolge von Funktionen auswendig rauskloppen muss.

  2. Am Rande: Typo in der Überschrift „Highstack“…

    1. david sagt:

      Hoffentlich hats noch keiner gelesen ;) Danke.

      1. nikosch sagt:

        Dann mehr ;) : „garnicht zutreffen“ -> gar nicht zutreffend

  3. Xandi sagt:

    Ist das keine OpenBook Prüfung?
    Wir schreiben unsere Java Prüfungen auch immer auf Papier.. etwas seltsam auf 17-20 Seiten drei vier Klassen zu verteilen =) Aber man gewöhnt sich dran…

  4. nikosch sagt:

    bei str_replace ist der Heuhaufen aber nicht vorne..

Schreibe einen Kommentar

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