php中浮点数相关处理(待完善)

is_numeric与ctype_digit

bool is_numeric ( mixed $var )
如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE。

bool ctype_digit ( string $text )
检查提供的 string 和 text 里面的字符是不是都是数字。
当使用整数作为参数调用这些函数的时候, 这些函数的行为和 C 语言(ctype.h) 中的对应函数一样。 也就是说,如果传入了小于 256 的整数参数,它会把这个整数当做 ASCII 码值, 来检测对应字符是否符合要求(数值检测的 ASCII 值范围为 0x30-0x39)。 如果传入的参数介于 -128 和 -1 之间(含 -128 和 -1),它会先将其加上 256,然后再进行检测。
需要提醒的是,如果可以满足需求,请优先考虑使用 ctype 函数, 而不是正则表达式或者对应的 “str_*” 和 “is_*” 函数。 因为 ctype 使用的是原生 C 库,所以会有明显的性能优势。
Note:
这个函数的参数要求是一个 string 这一点是非常有用的,因此当你传入一个 integer 的参数也许不能得到期望的结果。然后,同样需要注意HTML表单将会返回数字字符串而不是一个整型。
Note:
如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

检测输入的是否是数字/数字字符串,(二进制0b、八进制0、十六进制0x 都是数字~~)
is_numeric:检测是否为数字或数字字符串,可为负数和小数,会自动去除参数前面的空格(如果有),可以检测超过PHP_INT_MAX的数字。
ctype_digit:检测字符串中的字符是否都是数字,负数和小数会检测不通过,如果传入整数,可能会出现异常结果,可以先转换为字符串,一般用于验证是否是正整数,但是如‘045’,‘0000’,这种0开头的数字字符串也会返回true。

$a = 0001111222;
var_dump($a,strval($a));  //int 299666
var_dump(is_numeric($a)); //true  
var_dump(ctype_digit($a)); //true 

$a = 011;
var_dump($a,strval($a));  //int 9 string '9' (length=1)
var_dump(is_numeric($a)); //true
var_dump(ctype_digit($a)); //false

$a = 0x11;
var_dump($a,strval($a));  //int 17    string '17' (length=2)
var_dump(is_numeric($a)); //true
var_dump(ctype_digit($a)); //false

$a = '011';
var_dump($a);  //int 9 string '9' (length=1)
var_dump(is_numeric($a)); //true
var_dump(ctype_digit($a)); //true

$a = 0.1;
var_dump($a);
var_dump(is_numeric($a)); //true
var_dump(ctype_digit($a)); //false

$a = -1;
var_dump($a);
var_dump(is_numeric($a)); //true
var_dump(ctype_digit($a)); //false

$a = 'a';
var_dump($a);
var_dump(is_numeric($a)); //false
var_dump(ctype_digit($a)); //false

参考:
// PHP中数字检测is_numeric与ctype_digit的区别介绍
//http://blog.csdn.net/e421083458/article/details/17532591

Ctype函数 简介
http://php.net/manual/zh/intro.ctype.php

http://php.net/manual/zh/function.ctype-digit.php
bool ctype_digit ( string $text )

http://php.net/manual/zh/function.is-numeric.php
bool is_numeric ( mixed $var )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值