2011-02-06 47 views
4

我這樣做是爲了檢查和已經使用的種類數的變量在PHP中:可以乘以一個變量來檢查它是否真的是一個數字在PHP?

$myvar = $myvar * 1; 

這個問題,我有一個數字,或者$ MYVAR有任何其他卡拉科特,結果是0

我想知道這會不會在未來困擾我。

爲了防止清酒,我正在使用一個函數,以上述代碼,因此我可以根據需要進行更改。例如:

$myvar = IntOrZero($myvar); 

所以我的問題,如果這是一個威馬檢查和使用數字變量?

編輯:
使用* 1,我相信它會返回一個類型數字的變量。
見:

$var = "350"; 
$num = 120; 
// builtin 
if (is_numeric($var)) 
    echo($var - $num); 

// multiplying 
$var *= 1; 
echo($var - $num); 

雖然我不知道,如果內置的方法將回聲我想要什麼,我相信,乘法會。
我有點不在乎$ var是否是數字,如果不是,我不會向用戶顯示任何消息,如果它不是數字,我將使用0值。根據答案,這會是一個好方法嗎?

function IntOrZero($var){ 
    return is_numeric($var) ? intval($var) : 0; 
} 

感謝,

+4

答:沒有。使用內置函數。 – NotMe 2011-02-06 04:38:05

+0

雖然下面的每個人都說得對,但有一種恰當的方式可以做到這一點..有可能讓每個人都對我產生憤怒......有時候,對於那些並不重要的小項目來說,編寫$ myvar = 0 + $ myvar; (略有不同的表述,但相同的想法) – Ben 2011-02-06 04:50:53

回答

13

不,這不是一個好辦法,這裏的原因:

$ php -r 'echo array() * 1;' 
Fatal error: Unsupported operand types in Command line code on line 1 

要確保一個變量是一個數字,cast it

$integer = (int)$integer; 
$float = (float)$float; 

檢查無論是數字或沒有:

is_numeric($var) // number or string containing any valid numeric expression 
ctype_digit($var) // string containing only digits 
is_int($var)  // is of type int 
is_float($var)  // is of type float 

這些都是SL根據您想要檢查的內容而異。參考文獻:

http://php.net/is_numeric
http://php.net/manual/en/function.ctype-digit.php
http://php.net/is_int
http://php.net/is_float

3

有什麼錯is_int()\ is_numeric()來\ ctype_digit()?

2

嗯爲什麼你沒有做適當的檢查?

像:

我強烈建議您使用正確的方法檢查您的值。

相關問題