Datentyp von GET/POST-Variabeln
Trobi
- programmiertechnik
0 glan0 Rouven
0 Der Martin
- php
Hallo.
Kann man POST und GET-Daten einfach so abfragen:
if($_GET['abc']==15)
oder muss man die Zahl als String behandeln?
if($_GET['abc')=="15")
Oder vereinfacht ausgedrückt: Welchen Datentyp haben die Variabeln, die mir von POST und von GET übermittelt werden?
MfG
Trobi
Hallo,
Kann man POST und GET-Daten einfach so abfragen:
if($_GET['abc']==15)
oder muss man die Zahl als String behandeln?
if($_GET['abc')=="15")
Du kannst sicherlich außer PHP noch eine Programmiersprache, oder?
Also: In PHP gibt es keine Variablentypen. Man kann eine Zahl als String oder als int behandeln, einen Unterschied macht das nicht.
Probier mal aus:
echo "23" + 42;
MfG
Hello,
Also: In PHP gibt es keine Variablentypen. Man kann eine Zahl als String oder als int behandeln, einen Unterschied macht das nicht.
das ist so nicht ganz richtig. Vergleichsoperatoren etc. führen nur automatische Umwandlungen durch. Nichts desto trotz bietet auch PHP so etwas wie typ-gebundene Vergleichsoperatoren an.
Was die Ausgangsfrage angeht ist es allerdings in der Tat zunächst mal belanglos, ob gegen 42 oder "42" verglichen wird.
MfG
Rouven
Moin,
Kann man POST und GET-Daten einfach so abfragen:
if($_GET['abc']==15)
oder muss man die Zahl als String behandeln?
if($_GET['abc')=="15")
die Typtreue ist in PHP nur sehr schwach ausgeprägt. Das heißt, PHP kennt zwar den Unterschied zwischen Strings und numerischen Werten, wandelt die Ausdrücke aber implizit automatisch um. Wahrscheinlich ist also, dass beide deiner Formulierungen das erwartete Ergebnis haben - es sei denn, du vergleichst die zwei Ausdrücke mit dem Identitäts-Operator '===', bei dem auf Wert- und Typgleichheit überprüft wird.
Oder vereinfacht ausgedrückt: Welchen Datentyp haben die Variabeln, die mir von POST und von GET übermittelt werden?
Grundsätzlich erstmal String. Will man sie als numerische Werte verwenden und ganz sichergehen (oder sehr ordentlichen Code schreiben), dann sollte man sie explizit umwandeln.
So long,
Martin