在php中有时候需要判断一个变量的值是否为数字或是否为数字字符串,而php中也提供了一个很好用的内置函数 is_numeric(),可以很轻松的来检测变量。

php is_numeric() 函数介绍

is_numeric():检测一个php的变量是否为数字或数字字符串。

语法:

is_numeric($var)

参数:

$var:被检测的变量

返回值:

如果被检测的变量是数字或字符串,返回TRUE,否则返回FALSE。

PHP is_numeric 检测变量是否为数字或数字字符串

例1:

php代码

<?php
$str = '123456';
echo $str.' 是否为数字:';
var_dump(is_numeric($str));
$str2 = '123456a';
echo $str2.' 是否为数字:';
var_dump(is_numeric($str2));
$str3 = 123456;
echo $str3.' 是否为数字:';
var_dump(is_numeric($str3));
$str4 = 1234.56;
echo $str4.' 是否为数字:';
var_dump(is_numeric($str4));
?>

打印结果:

123456 是否为数字:bool(true) 
123456a 是否为数字:bool(false) 
123456 是否为数字:bool(true) 
1234.56 是否为数字:bool(true)

PS:如果被检测的变量,是一个带有小数的字符串,也会被认为是数字类型

示例2:

is_numeric() 函数,有可能会判断部为非数字的字段串为数字,比如部份16进制的数字。

php代码

<?php
echo is_number('1e4');//这个是16进制
echo is_number('1a4');//这个是16进制
function is_number($str){
    if(is_numeric($str)){
       return '是数字';
    }else{
        return '非数字';
    }
}
?>

进行结果:

是数字
非数字

php判断是字符串是否为纯数字的方法

使用 is_numeric() 函数来判断一个字符串是否为数字时,逻辑并不严谨,因为它不仅仅能判断十进制的数字,也对部份十六进制数字类型的字符串免疫。

php中还提供了一个函数 ctype_digit() ,也可以达到判断字符串是否为数字的目的。

php ctype_digit()函数介绍

参考文章:https://www.feiniaomy.com/post/501.html

例:

<?php
$v = '1e4';
var_dump(ctype_digit($v));
//bool(false) 
$v2 = '11245abcde';
var_dump(ctype_digit($v2));
//bool(false) 
$v3 = '11245.55';
var_dump(ctype_digit($v3));
//bool(false) 
$v4 = '11245';
var_dump(ctype_digit($v4));
//bool(true)
?>