2014-12-28 133 views
0

似乎PHP is_NaN()函數沒有返回任何東西(不返回truefalse)。這裏是它沒有返回任何東西的代碼:PHP is_NaN()不返回任何東西

$id = 111; 
$booltest = is_nan($id); 
if ($booltest) { 
echo 'Invalid ID: "' . $id . '"'; 
exit(); 
} 

它不會觸發if語句。我正在使用PHP5。有誰知道解決此問題的方法或方法?謝謝。

+4

這段代碼的預期結果是結束靜默,因爲is_nan返回該實例假的。 – JAL

+0

嘗試更改爲'$ id = NAN' –

+0

該函數只在設置爲字符串時返回編譯器警告,而不是自定義錯誤。 – CosineWaves

回答

1

is_nan()不檢查變量的數據類型是否是數字。有一種叫not a numberNaN,它告訴我們該號碼不是可表示的形式。 is_nan()函數檢查數字是否爲NaN。

如果你想檢查整數,你可以使用is_int()

象下面這樣:

$id = 111; 
$booltest = is_int($id); 
if ($booltest) { 
echo 'Invalid ID: "' . $id . '"'; 
exit(); 
} 
1

我想你可能會被!is_numeric混爲一談is_nan

NaN(「不是數字」)是一個特定的浮點值,表示某些不能用實數表示的數學結果。例如,負數的平方根:

$x = sqrt(-1); 
var_dump($x); 
var_dump(is_nan($x)); 
var_dump(is_numeric($x)); 

輸出:

float(NAN) 
bool(true) 
bool(true) 

is_nan僅測試飄浮並僅返回true爲特定浮點值的NaN。如果你給它,比如一個字符串,它將返回null,因爲參數不是浮點類型。所以,它聽起來就像你正在尋找替代is_numeric

$x = "asdf"; 
var_dump(is_nan($x)); 
var_dump(is_numeric($x)); 
$y = 111; 
var_dump(is_nan($y)); 
var_dump(is_numeric($y)); 

輸出:

NULL 
bool(false) 
bool(false) 
bool(true)