Der Martin: PHP $_GET: Array / Kein Array

Beitrag lesen

Hallo,

ich habs mit if( !( is_array( $page ))) { ... }, ich breuf jetzt warum die Variable manchmal n String und manchmal n array mit strings is. Ich habs so gelöst aber es gibt elegantere Wege als meinen Kesselflickerweg :/.

nein, nicht wenn die Daten aus unbekannter Quelle kommen.

Zunächst mal werden die Elemente in $_GET ja aus den URL-Parametern im Query-String gebildet. Und da gilt: Ein Parameter, ein Wert. Kommen mehrere Parameter hintereinander mit dem gleichen Namen, dann sieht man im $_GET-Array nur den letzten davon.

Endet aber der Name eines Parameters mit eckigen Klammern[], dann baut PHP daraus ein Array. Die Daten, die z.B. ein <input name="param[]" ...> generiert, sind analog zu $_GET['param'][]="...".
Auch bei einer herkömmlichen Zuweisung legt PHP ja automatisch ein Array an, wenn man [] hinter dem Variablennamen notiert.

Fazit: Erwartet man die ankommenden Daten aus einem Formular, dann sollte man selbst wissen, welche Parameter als einfache Werte kommen und welche als Array. Prüfen sollte man es dennoch, weil von außen kommende Daten ja auch beliebig manipuliert sein können.

So long,
 Martin