2012-07-09 128 views
0

我被一個形式和PHP文件使用var_dump(is_int($my_var));發佈的數值,但它返回bool(false)雖然我張貼,如果我用var_dump(is_int(1));它是罰款,並返回bool(true) 什麼是錯的。 ...?PHP:is_int返回錯誤的結果

+0

var_dump($ my_var);'return? – Bjoern 2012-07-09 12:04:04

+0

檢查$ my_var類型,如果is_int($ my_var)返回false,則$ my_var必須不是整數 – Ben 2012-07-09 12:04:59

+0

如果您的變量'$ my_var'包含表單的輸入(如您的第一句話所示),它將包含鍵入字符串 - php不會自動轉換表單數據。 – codeling 2012-07-09 12:05:32

回答

7

通過POST請求傳輸的變量是字符串,所以您在返回false的字符串上調用is_int()

您可以使用is_numeric()filter_var()來替代或者簡單地將您的變量轉換爲整數。

+0

感謝您指出我的錯誤... – 2012-07-09 12:25:20

0
// First check if it's a numeric value as either a string or number 
    if(is_numeric($int) === TRUE){ 

     // It's a number, but it has to be an integer 
     if((int)$int == $int){ 

      return TRUE; 

     // It's a number, but not an integer, so we fail 
     }else{ 

      return FALSE; 
     } 

    // Not a number 
    }else{ 

     return FALSE; 
    } 

而且,不但得不到變量

$my_var = $_POST["value"]; 

試試這個,而不是看是否值真的過去了。

$my_var = $_REQUEST["value"]; 
+0

您可以將整個代碼片段縮減爲'return(int)$ int == $ int;' – KingCrunch 2012-07-09 12:22:46