• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP之如何判断数字(数字字符串不算)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  看到这个问题,一开始想应该很简单吧~而且方法还不止一种.

  网上查了下,绝大部分的人是使用is_numeric方法,而且后面还经常会跟着一句话,不要把问题想太复杂,巴拉巴拉的...

  自己做了下测试,确实不一定正确,is_numeric在手册上的说法是:检测变量是否为数字或数字字符串,数字字符串. 

$a = "000022153.26";
echo is_numeric($a) ? "Y" : "N";

  结果显示的是Y

  显然这不是我想要的答案,根据网上有些人的提示,我想到了另一个方法,既然is_numeric是数字或者数字字符串,那先把字符串给排除了不就行了

if (! is_string ( $a )) {
    if (is_numeric ( $a )) {
        echo "Y";
        exit ();
    }
}
echo "N";

  得到的结果是正确的,N 再后来看到一个人提示,使用is_nan,我试了下,最后屏幕打印了N,我开始还挺兴奋,以为对了,直接发文章了,其实是错误的,它还是把$a当float来解析了,is_nan 在手册中的意思是判定某个数字是否为非数值,就是NAN, not a number,当$a为一个string类型的字符串,如”a“时,就会直接报错,故使用is_nan是没法实现判断一个变量是否是字符串

echo  is_nan($a) ? "Y" : "N"

  而在阅读了手册后,找到了最容易找到的方法

$a="0002133.226";
if(is_int($a) || is_float($a)){
    echo "Y";      
}else{ echo "N";}

  与之对应的 gettype($a) 然后跟 ”integer“和”double“进行比较,若匹配了就是数字,不过这个的效率没有上面的高,因为它进行了字符串的比较,它是比较慢的

  对于刚之前看文章的人如果有误导,非常抱歉了  

  不积跬步无以至千里

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php接口数据加密、解密、验证签名代码实例发布时间:2022-07-10
下一篇:
php将字符串转为二进制数据串发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap