it-swarm.com.de

Wie bekomme ich int statt String aus dem Formular?

Variable vom Formular erhalten:

<form method = 'POST' action = ''>
        <input type = 'text' name = 'a' size = '1' >
        <input type = 'submit' value = 'Find it'>
</form>"

Wenn ich 1 eingebe und gettype ($ POST _ ['a']) verwende, wird mir eine Zeichenfolge zurückgegeben. Kann ich int eingeben? denn danach möchte ich überprüfen, ob diese Variable int ist.

UPDATE

Bekam Antworten, dass es immer string zurückgibt und sie mir angeboten haben, (int) oder intval () zu verwenden, aber wenn es wirklich ein String wie 'a' ist, wird 0 zurückgegeben, aber es kann auch ein ganzzahliger Wert von 0 sein. Wie kann dieses Problem gelöst werden? 

UPDATE

Nach der Bearbeitung des Tippfehlers schlug Brad Christie den besten Weg vor, mit is_numeric

19
Templar
// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);

Sie können is_numeric verwenden, um zu überprüfen, und php erlaubt auch das Umschalten auf integer type.

Für tatsächliche Vergleiche können Sie is_int durchführen.

Update

Version 5.2 hat filter_input , was für diesen Datentyp (und andere) etwas robuster sein könnte:

$int = filter_input(INPUT_POST, 'a', FILTER_VALIDATE_INT);

Ich habe FILTER_VALIDATE_INT gewählt, aber es gibt auch FILTER_SANITIZE_NUMBER_INT und viel mehr - es hängt nur davon ab, was Sie tun möchten.

24
Brad Christie

Senden über die Leitung per HTTP, alles ist eine Zeichenfolge. Es liegt an Ihrem Server, zu entscheiden, dass "1" 1 sein soll.

16
jpsimons

Nein. HTTP behandelt nur Text (oder Binärdateien). 

Sie müssen es konvertieren.

4
Quentin

Ich würde (int)$_POST['a'] verwenden, um es in eine Ganzzahl zu konvertieren.

1
user479911

wenn Sie eine Breitentypkompatibilität vorziehen und andere Eingabetypen als int (double, float, ecc.) beibehalten möchten, empfehle ich Folgendes:

$var = is_numeric($_POST['a'])?$_POST['a']*1:$_POST['a'];

Sie erhalten:

$_POST['a'] = "abc"; // string(3) "abc"
$_POST['a'] = "10"; // int(10)
$_POST['a'] = "10.12"; // float(10.12)
0
Simone Desantis