is_numeric () vs. is_float () vs. is_int ()

8

Mein Verständnis ist ...

wenn is_numeric($input) === true

dann entweder

is_float($input) === true ODER

is_int($input) === true ODER

$input === 0 ODER

$input ist eine numerische Zeichenkette (das heißt, sie würde eine der ersten 3 erfüllen, wenn sie nicht in Anführungszeichen eingeschlossen wäre).

Stimmt das? Gibt es andere Unterschiede?

    
ryanve 29.11.2011, 07:11
quelle

2 Antworten

24

Siehe die PHP-Dokumentation zu is_numeric . Es spricht über alles, was erlaubt ist, und es ist mehr als is_float und is_int .

Es ist auch wichtig zu beachten, dass is_int nur für Dinge vom Typ integer funktioniert, dh Stringdarstellungen sind nicht erlaubt. Dies ist ein häufiges Problem bei der Überprüfung, dass Formulareingabe eine Ganzzahl ist. Sie sollten filter_var oder etwas aus der Filterfamilie mit dem Filter FILTER_VALIDATE_INT verwenden. Verwenden Sie für Gleitkommazahlen FILTER_VALIDATE_FLOAT .

Wenn Sie als Grund für die Suche nach einer Ganzzahl einen Parameter als int validieren möchten, können Sie dies in PHP 7 folgendermaßen tun:

%Vor%

PHP 7 hat zwei verschiedene Modi zum Konvertieren in int; diese Antwort erklärt es ein wenig mehr.

Beachten Sie, dass dies wahrscheinlich nicht der Fall ist, wenn Sie den Inhalt eines Formularelements überprüfen. Verwenden Sie dafür die filter_var Lösung.

    
Levi Morrison 29.11.2011, 07:19
quelle
2

Siehe die Dokumentation . Ein numerischer Wert kann sein:

  • Eine Ganzzahl
  • Ein Float
  • Exponential
  • Ein positives Hexadezimal
  • Eine Zeichenfolge, die die meisten davon enthält
fncomp 29.11.2011 07:15
quelle

Tags und Links