Aktueller Standort: Startseite> Neueste Artikel> Warum ist es möglich, dass is_numeric false zurückgibt, wenn is_nan wahr zurückgibt?

Warum ist es möglich, dass is_numeric false zurückgibt, wenn is_nan wahr zurückgibt?

gitbox 2025-05-27

In PHP sind is_nan () und is_numeric () zwei häufig verwendete Funktionen, die verwendet werden, um festzustellen, ob eine Variable "keine Zahl" (NAN) ist und ob es sich um eine Nummer oder eine numerische Zeichenfolge handelt. Viele Menschen können jedoch verwirrt sein, warum IS_Numeric () in einigen Fällen is_nan () zurückgibt . In diesem Artikel werden diese beiden Funktionen ausgleichen und die Unterschiede zwischen ihnen erläutern.

1. Wie ist das Arbeitsprinzip der Funktion is_nan ()

is_nan () ist eine Funktion, mit der ein Wert NAN (nicht eine Zahl) ist. NAN ist ein besonderer schwebender Punktwert, der ein illegales numerisches Berechnungsergebnis darstellt. Wenn Sie beispielsweise einige mathematische Operationen ausführen, kann die NAN zurückgegeben werden, wenn das Ergebnis keine gültige Nummer ist. Im Allgemeinen wird die NAN durch die folgenden Situationen verursacht:

  • 0 geteilt durch 0

  • Quadratwurzel der negativen Zahl

  • Ungültiger mathematischer Ausdruck (z. B.: Umwandlung ungültiger Zeichenfolgen in Zahlen)

Diese illegalen Zahlen können mit is_nan () erkannt werden.

Beispiel:

 $var1 = acos(2); // Dies ist eine illegale Operation,acos(2) Wird zurückkehren NaN
$var2 = 0 / 0;   // 0 Divide durch 0 Das Ergebnis ist auch NaN

echo is_nan($var1); // Ausgabe true
echo is_nan($var2); // Ausgabe true

2. Wie ist das Arbeitsprinzip der Funktion is_numeric ()

is_numeric () wird verwendet, um festzustellen, ob eine Variable eine numerische Zeichenfolge oder eine numerische Zeichenfolge ist. Diese Funktion prüft, ob der angegebene Wert ein rechtlicher numerischer Typ ist oder ob er in eine Nummer konvertiert werden kann. Es ist zu beachten, dass is_numeric () nicht prüft, ob der Wert eine gültige schwimmende Punktnummer ist, sondern nur prüft, ob er als Zahl (einschließlich Ganzfunkpunkte oder Schwimmpunktnummer) dargestellt werden kann.

Beispiel:

 echo is_numeric(123);     // Ausgabe true,123 Es ist eine Nummer
echo is_numeric("123");   // Ausgabe true,Saite "123" 也Es ist eine Nummer
echo is_numeric("12.34"); // Ausgabe true,Saite "12.34" 也Es ist eine Nummer
echo is_numeric("abc");   // Ausgabe false,"abc" 不Es ist eine Nummer

3. Warum sind es unterschiedliche Rückgabewerte für is_nan () und is_numeric () ?

Obwohl sowohl is_nan () als auch is_numeric () die Erkennung von Zahlen beinhalten, variieren ihre Inspektionsmechanismen, insbesondere im Umgang mit NAN.

  • is_nan () wird speziell verwendet, um zu prüfen, ob ein Wert NAN ist, was ein spezieller "nicht nummerierter" Wert ist. Nan ist ein Zustand schwimmender Punkte, und is_numeric () kümmert sich nur darum, ob der Wert in eine gültige Zahl umgewandelt werden kann.

  • Wenn is_nan () true zurückgibt, gibt is_numeric () false zurück, da NAN keine gültige Nummer ist und Is_Numeric () nur gültige Zahlen oder Zeichenfolgen erkennen kann, die in Zahlen konvertiert werden können. NAN kann nicht als gesetzliche Nummer angesehen werden, so dass is_numeric () false zurückgibt.

Beispiel:

 $var = acos(2); // NaN

echo is_nan($var);    // Ausgabe true,$var Ja NaN
echo is_numeric($var); // Ausgabe false,NaN 不Ja一个合法的数字

4. Zusammenfassung

  • is_nan () kann nur bestimmen, ob ein Wert NAN ist. Wenn es zutreffend zurückgibt, bedeutet dies, dass der Wert eine illegale Zahl ist.

  • is_numeric () wird verwendet, um zu prüfen, ob ein Wert als gültige Nummer verwendet werden kann, während die NAN als ungültige Nummer angesehen wird, sodass er false zurückgibt.

Aus diesem Grund gibt is_numeric () in PHP false zurück, wenn is_nan () true zurückgibt.