Aktueller Standort: Startseite> Neueste Artikel> Warum mache ich oft Fehler, wenn ich IS_int verwende, um Zeichenfolgen zu bestimmen? Was sind die Arten von Fallen in is_int?

Warum mache ich oft Fehler, wenn ich IS_int verwende, um Zeichenfolgen zu bestimmen? Was sind die Arten von Fallen in is_int?

gitbox 2025-06-15

1. grundlegendes Arbeitsprinzip der Funktion is_int ()

Die Funktion is_int () wird verwendet, um zu überprüfen, ob eine Variable ein Ganzzahl -Typ ist. Geben Sie True zurück, wenn die Variable eine Ganzzahl ist, ansonsten falsch . In PHP sind Ganzzahlen Zahlen ohne Bruchteile wie 42 oder -10 .

 var_dump(is_int(42)); // true
var_dump(is_int('42')); // false
var_dump(is_int(42.0)); // false

Für das obige Beispiel funktioniert is_int () ordnungsgemäß, die Nummer 42 wird als Ganzzahl erkannt, während weder die String '42 " noch die schwimmende Punktnummer 42.0 als ganze Zahlen angesehen werden.

2. Häufige Fehler bei der Beurteilung von Zeichenfolgen mit is_int ()

In PHP begegnen wir häufig numerische Zeichenfolgen (wie '42' ) als Eingabe und versuchen zu erkennen, ob es sich um Ganzzahlen handelt. An diesem Punkt wird die Verwendung von is_int () , um die Zeichenfolge zu beurteilen, einen Fehler verursacht, da IS_int () nur für echte ganze Zahlen, nicht für Zeichenfolgen in numerischer Form zurückgegeben wird.

 var_dump(is_int('42')); // false
var_dump(is_int('0'));  // false
var_dump(is_int('123abc')); // false

Auch wenn '42' wie eine Ganzzahl aussieht, ist es tatsächlich eine Zeichenfolge, so dass is_int () false zurückgibt.

3. Probleme zur String- und Zahlenkonvertierung

PHP wandelt automatisch einige Typen in andere Typen um. Wenn Sie beispielsweise arithmetische Operationen in einer numerischen Zeichenfolge ausführen, wandelt PHP sie in eine Ganzzahl um. Dies bedeutet jedoch nicht, dass die Zeichenfolge selbst ein ganzzahliger Typ ist.

 $var = '42';
echo $var + 1;  // 43,Automatisch in Ganzzahlen konvertieren und berechnen

Wenn Sie jedoch is_int () verwenden, um es zu überprüfen, ist das Ergebnis immer noch falsch, da IS_int () nach dem Typ der Variablen prüft, nicht ob sein Wert in eine Ganzzahl konvertiert werden kann.

4. Typfalle von is_int () : Die numerische Zeichenfolge stimmt nicht mit dem Typ überein

Eine weitere häufige Falle besteht darin, Zeichenfolgen zu verwenden, die Zahlen als Eingabe enthalten, die sie fälschlicherweise als Ganzzahlen betrachten. Beispielsweise sind weder "42" und "42" (Saiten mit Leerzeichen) ganzzahlige Typen.

 var_dump(is_int('42'));  // false
var_dump(is_int(' 42 ')); // false

Auch wenn '42' eine numerische Zeichenfolge ist, handelt es sich immer noch um einen String -Typ, kein ganzzahliger Typ. Diese Nichtübereinstimmung kann logische Fehler im Programm verursachen.

5. is_numeric () als Alternative

Wenn Ihr Ziel darin besteht, zu überprüfen, ob eine Zeichenfolge eine Zahl darstellt, anstatt nur zu überprüfen, ob es sich um eine Ganzzahl handelt, ist die Funktion is_numeric () möglicherweise eine bessere Wahl. is_numeric () gibt true zurück, wenn die Variable eine numerische oder eine numerische Zeichenfolge ist.

 var_dump(is_numeric('42'));  // true
var_dump(is_numeric('42.5')); // true
var_dump(is_numeric('0'));    // true
var_dump(is_numeric('abc'));  // false

Durch die Verwendung von is_numeric () können Sie die Einschränkungen von is_int () im Umgang mit numerischen Zeichenfolgen vermeiden, insbesondere wenn es erforderlich ist, Benutzereingaben oder externe Daten zu beurteilen.

6. Lösen Sie das Problem von is_int ()

Wenn Sie wirklich feststellen müssen, ob eine Zeichenfolge sicher in eine Ganzzahl konvertiert werden kann, sollten Sie die Funktion intval () in Betracht ziehen, die die Zeichenfolge in eine Ganzzahl umwandelt oder in Kombination mit regulären Ausdrücken eine strengere Überprüfung durchführt.

 $var = '42';
if (intval($var) == $var) {
    echo "$var ist eine Zeichenfolge, die in eine Ganzzahl umgewandelt werden kann";
} else {
    echo "$var Keine gültige Ganzzahl";
}

oder:

 $var = '42';
if (preg_match('/^\d+$/', $var)) {
    echo "$var ist eine ganze Reihe von Zahlen";
} else {
    echo "$var 不ist eine ganze Reihe von Zahlen";
}

Diese Methode kann eine direkte Abhängigkeit von is_int () vermeiden, um numerische Zeichenfolgen zu verarbeiten.