2017-07-30 126 views
0

是否有任何內置函數檢查值是數字,在任何整數類型中,如int,float,而不是string。 is_numeric對於「2」返回true。我應該通過is_int和is_float來檢查它嗎?函數檢查值是int還是float但不是PHP中的字符串

,我想應該返回「無效值」的時候$ a和$ b都沒有號碼的功能:

function myFunction($a, $b, $sign){} 
+6

'$數= is_int($值)|| is_float($ value)' – cgTag

+1

謝謝,但PHP中是否有其他數字類型?像double或decimal? –

+1

你爲什麼問我?閱讀說明書:http://php.net/manual/en/language.types.php – cgTag

回答

1

is_numeric($value) && !is_string($value)

這就是我一直在尋找

+1

很高興喜歡它。 – localheinz

2

這不是一個答案本身,但這是太投入在註釋:如果你考慮一個數字的字符串版本仍然是一個數字

function isFloatOrInt($var) 
{ 
    $type = gettype($var); 

    switch ($type) { 
     case 'integer': 
     case 'double': 
      return true; 
     case 'string': 
      //check for number embedded in strings "1" "0.12" 
      return preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $var); 
     default: 
      return false; 
} 

的Preg比賽都可以在這裏非常有用。

你說

但不串

但這是否意味着這個'string'或本'10',而不是10例如,即。一個字符串,也是一個數字?

可能有很多方法可以做到這一點,但也有一些邊緣案例,所以它主要取決於您的需求。例如是octet一個數字給你0777或指數12e4甚至十六進制0xf4c3b00c

+2

https://www.merriam-webster.com/dictionary/per%20se – localheinz

+1

這絕對不是最簡單的解決方案。 – localheinz

+1

不,但在某些情況下,'is_numeric'可以在不需要時返回一個數字,例如可以將其視爲指數的「102e8」。 – ArtisticPhoenix

相關問題