Dans PHP, IS_NAN () et IS_NUMERIC () sont deux fonctions couramment utilisées, qui sont utilisées pour déterminer si une variable n'est "pas un nombre" (NAN) et s'il s'agit d'un nombre ou d'une chaîne numérique. Cependant, de nombreuses personnes peuvent être confondues pourquoi, dans certains cas , Is_nan () renvoie vrai , is_numeric () peut retourner faux . Cet article approchera de la façon dont ces deux fonctions fonctionnent en profondeur et expliquent les différences entre elles.
is_nan () est une fonction utilisée pour vérifier si une valeur est nan (pas un nombre). Nan est une valeur de point flottante spécial qui représente un résultat de calcul numérique illégal. Par exemple, lorsque vous effectuez des opérations mathématiques, NAN peut être renvoyé si le résultat n'est pas un nombre valide. Généralement, NAN est causé par les situations suivantes:
0 divisé par 0
Racine carrée du nombre négatif
Expression mathématique non valide (comme: convertir des chaînes non valides en nombres)
Ces nombres illégaux peuvent être détectés en utilisant IS_NAN () .
$var1 = acos(2); // C'est une opération illégale,acos(2) Reviendra NaN
$var2 = 0 / 0; // 0 Diviser 0 Le résultat est aussi NaN
echo is_nan($var1); // Sortir true
echo is_nan($var2); // Sortir true
is_numeric () est utilisé pour déterminer si une variable est une chaîne numérique ou une chaîne numérique. Cette fonction vérifie si la valeur donnée est un type numérique légal ou s'il peut être converti en nombre. Il convient de noter que Is_Numeric () ne vérifie pas si la valeur est un numéro de point flottant valide, mais vérifie uniquement si elle peut être représentée comme un nombre (y compris les entiers ou le numéro de point flottant).
echo is_numeric(123); // Sortir true,123 C'est un numéro
echo is_numeric("123"); // Sortir true,Chaîne "123" 也C'est un numéro
echo is_numeric("12.34"); // Sortir true,Chaîne "12.34" 也C'est un numéro
echo is_numeric("abc"); // Sortir false,"abc" 不C'est un numéro
Bien que les deux IS_NAN () et IS_NUMERIC () impliquent la détection de nombres, leurs mécanismes d'inspection varient, en particulier lorsqu'ils traitent avec NAN.
is_nan () est spécifiquement utilisé pour vérifier si une valeur est nan, qui est une valeur "non-nombre" spéciale. Nan est un état de points flottants, et is_numeric () ne se soucie que si la valeur peut être convertie en un nombre valide.
Lorsque is_nan () renvoie true , is_numeric () renvoie false car Nan n'est pas un nombre valide, et is_numeric () ne peut reconnaître que des nombres ou des chaînes valides qui peuvent être convertis en nombres. Nan ne peut pas être considéré comme un numéro juridique, donc is_numeric () renvoie false .
$var = acos(2); // NaN
echo is_nan($var); // Sortir true,$var Oui NaN
echo is_numeric($var); // Sortir false,NaN 不Oui一个合法的数字
is_nan () ne peut déterminer que si une valeur est nan. Lorsqu'il renvoie vrai , cela signifie que la valeur est un nombre illégal.
IS_NUMERIC () est utilisé pour vérifier si une valeur peut être utilisée comme numéro valide, tandis que NAN est considéré comme un numéro non valide, donc il renvoie faux .
C'est pourquoi en php, is_numeric () renvoie false quand is_nan () renvoie true .