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.
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.
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.
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.
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.
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.