is_int
überprüft, dass der Datentyp eine Ganzzahl ist, aber alles in $_GET
ist eine Zeichenkette. Daher wird immer false
zurückgegeben.
Im Notfall könnten Sie in eine Ganzzahl umwandeln und dann nach! = 0 suchen.
%Vor% Aber eine robustere Lösung würde irgendeine Art von Eingabe-String-Validierung / -Filterung beinhalten, wie PHP's eingebautes filter_input_array()
.
(Editierter Beitrag am 13. Oktober, da er immer noch Upvotes erhält und etwas verwirrend formuliert wurde.)
Die Benutzereingabe im Array $ _GET (wie auch die anderen Superglobale) haben alle die Form von Strings.
is_int
prüft den Typ (dh string
) des Wertes, nicht ob er enthält ganzzahlige Werte. Zur Verifizierung, dass die Eingabe eine Ganzzahl-Zeichenfolge ist, würde ich entweder etwas wie ctype_digit
oder eine Ganzzahl filter ( FILTER_VALIDATE_INT
- dies hat den Vorteil, dass der Wert tatsächlich auf integer geändert wird). Natürlich könntest du es auch mit (int)
eingeben.
Aus der PHP-Dokumentation für is_int:
Hinweis: Um zu testen, ob eine Variable a ist Nummer oder eine numerische Zeichenfolge (z Formeingabe, die immer eine Zeichenkette ist), Sie müssen is_numeric () verwenden.
Jede Benutzereingabe kommt als String, weil PHP nicht weiß, welchen Datentyp Sie erwarten.
Wirf es auf eine Ganzzahl oder verwende eine Regex, wenn du sicherstellen willst, dass es sich um eine Ganzzahl handelt.
%Vor%Verwenden Sie is_numeric () , um den Inhalt und is_int zu bewerten () um den Typ zu bewerten.