2010-08-11 123 views
7

我有這個檢查爲整數或浮點數值

$number = 0.5 

if (is_float($number)) 
{ 
    echo 'float'; 
} 
else 
{ 
    echo 'not float'; 
} 

而且回聲不浮動。 可能是什麼原因 感謝

+0

您發佈的代碼對我來說工作正常(除非您在第一行之後忘了分號)。 – jhartz 2010-08-11 18:59:09

回答

37

大概$number實際上是一個字符串:"0.5"

請參閱is_numericis_*系列檢查變量的實際類型。如果您只知道要知道變量是否爲數字,無論它是實際上是intfloat還是string,請使用is_numeric

如果你需要有一個非零小數部分,你可以這樣做:

//if we already know $number is numeric... 
if ((int) $number == $number) { 
    //is an integer 
} 
+0

如果它是一個字符串,那麼我將如何區分一個整數和刺中的浮點數? 謝謝 – Autolycus 2010-08-11 18:42:52

+0

@user我已編輯回覆以解決您的問題。 – Artefacto 2010-08-11 18:45:50

+0

如果你想檢查浮點數,將其轉換爲int將無濟於事。另外,你應該使用['intval'](http://ca.php.net/manual/en/function.intval.php)或['floatval'](http://ca.php.net/manual /en/function.floatval.php)將字符串轉換爲數字。 – 2010-08-11 18:58:14

1

如果你是剛剛檢查的.(dot),那麼你就不需要typecast但操作它作爲一個字符串[strpos][1]()

if (strpos($number,'.') !== false) { 

    echo 'true'; 
}else { 
    echo 'false'; 
} 
+0

如果字符串中有兩個點,該怎麼辦? – OCDev 2014-10-05 02:41:09

+1

你仍然可以檢查爲一個字符串,就像'if(strpos($ number,'..')!== false)' – Noor 2014-10-07 12:48:38

+0

如果點不是彼此相鄰,那該怎麼辦? – OCDev 2014-10-08 11:45:11

0

如果我理解正確,使用類型轉換將允許您正確地檢查int和float,而不管機器的語言環境如何。然而,我可能是錯的......我不確定PHP是否支持小數語言環境,例如某些國家的逗號(,)。