PHP之如何判斷數字(數字字串不算)

來源:互聯網
上載者:User
  看到這個問題,一開始想應該很簡單吧~而且方法還不止一種.

  網上查了下,絕大部分的人是使用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“進行比較,若匹配了就是數字,不過這個的效率沒有上面的高,因為它進行了字串的比較,它是比較慢的

  對於剛之前看文章的人如果有誤導,非常抱歉了  

  不積跬步無以至千裡

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.