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

WBOY
Freigeben: 2016-06-23 14:37:25
Original
1111 Leute haben es durchsucht

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

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

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

$a = "000022153.26";echo is_numeric($a) ? "Y" : "N";
Nach dem Login kopieren

  结果显示的是Y

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

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

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

echo  is_nan($a) ? "Y" : "N"
Nach dem Login kopieren

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

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

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

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

  不积跬步无以至千里

 

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!