Heim  >  Fragen und Antworten  >  Hauptteil

Prüfen Sie, ob ein PHP-String nur aus Ganzzahlen besteht

Ich schreibe einen PHP-Code, um einige vom Benutzer eingegebene Daten zu validieren. Eine davon ist eine Ganzzahl, die „true“ zurückgibt, wenn ich $_REQUEST["age"]来获取它,当我用gettype($_REQUEST["age"]) == "integer"is_int($_REQUEST["age"])检查这个值是否为整数时,两者都返回false,但是当我使用is_numeric($_REQUEST["age"]) verwende. Ich möchte überprüfen, ob der Wert eines Parameters eine Ganzzahl ist. Verwende ich die ersten beiden Funktionen richtig oder übersehe ich etwas?

Danke

Hinweis: Ich versuche, gettype($_REQUEST["age"]),它给我返回string

auszugeben
P粉788765679P粉788765679417 Tage vor616

Antworte allen(2)Ich werde antworten

  • P粉293550575

    P粉2935505752023-09-22 16:02:18

    <?
         if(intval($_REQUEST["age"]) > 0):
            echo '整数';
         else:
            echo '其他';
         endif;
    ?>

    Antwort
    0
  • P粉107772015

    P粉1077720152023-09-22 09:25:38

    简短版本:

    使用ctype_digit($_REQUEST['age'])

    详细版本:

    你的问题是,当你使用gettype时,$_REQUEST返回一个字符串。即使该字符串在语义上是一个整数,比如16,它仍然是一个字符串类型,而不是整数类型的变量。你从这两个测试中得到不同的结果是因为它们测试的是不同的东西:

    • is_numeric测试一个字符串是否包含一个"可选符号、任意数量的数字、可选的小数部分和可选的指数部分",根据PHP文档。在你的情况下,该字符串只包含数字,所以测试返回True
    • is_int测试变量的类型是否为整数 - 但它不会是整数,因为它是由$_REQUEST返回的。

    这就是为什么is_numeric返回Trueis_int返回False的原因:该字符串只包含数字(所以是"numeric"),但在技术上仍然是一个字符串类型,而不是整数类型(所以不是"int")。当然,is_numeric对于整数测试来说是不够的,因为如果字符串有小数或使用科学计数法,它将返回True,即是数字但不是整数。

    为了测试$_REQUEST是否为整数,无论技术类型如何,你可以测试字符串中的所有字符是否都是数字(因此整个字符串是一个整数)。为此,你可以使用ctype_digit

    ctype_digit($_REQUEST['age'])

    这将对16返回True,但对16.516e0不返回True - 这样就可以将整数从非整数的数字中筛选出来。

    Antwort
    0
  • StornierenAntwort