2012-08-31 111 views
0

首先,我仍然是一個使用PHP的noob,而且我學到的很多東西都是來自本網站解決的問題,我也有我自己。檢查數組中的每個元素是正數,整數還是浮點數

我在這裏找到了所有我的原始問題的答案,但是當我把它們放在一起時,我無法獲得代碼工作。

我有一個使用PHP_SELF發佈到自身的基本表單。我希望檢查$ _POST數組中的所有輸入,以確保它是(1)正整數,(2)整數,(3)不包含小數。

if(!empty($_POST)) { 
    foreach($_POST as $key => $amount) { 
     if(!is_int($amount) || $amount < 0 || is_float(amount)) { 
      die('All data must be positive integers.'); 
     } 
    } 
} 

無論我在任何輸入字段中輸入什麼,它總是返回「死」錯誤。

回答

2

$amount是一個字符串,因此is_int總是會失敗,嘗試filter_var代替

if(!empty($_POST)) { 
    $options = array(
     'options' => array(
      'min_range' => 0 
     ) 
    ); 
    foreach($_POST as $key => $amount) { 
     if(filter_var($amount, FILTER_VALIDATE_INT, $options) === false) { 
      die('All data must be positive integers.'); 
     } 
    } 
} 
+0

我在關於is_int和字符串的PHP手冊頁上閱讀了相同的內容。我試過你的代碼,它仍然只返回我的die()錯誤。我甚至用簡單的形式創建了一個全新的頁面來隔離問題,並且它總是會失敗。最後,我拿出了「選項」標誌,它仍然繼續失敗。 – dustbowl

+0

@dustbowl你確定你所有的輸入都是整數,做一個var_dump($ _ POST)來查看。 – Musa

+0

當我做了一個var_dump之後,我看到我的SUBMIT按鈕總是在發佈數組中發佈「submit」,所以這就是爲什麼它繼續失敗。代碼似乎現在完美工作。謝謝您的幫助。 – dustbowl

3

is_float(amount)

應該在你的代碼

is_float($amount)

+0

即使固定我的錯字後,所有輸入仍然失敗if語句。 – dustbowl

0

錯字。將is_float(amount)替換爲is_float($amount)

0

試試這個。

if(!empty($_POST)) { 
    foreach($_POST as $key => $amount) { 
     if(!(is_int($amount) && $amount >= 0)) { 
      die('All data must be positive integers.'); 
     } 
    } 
} 
相關問題