2012-08-31 62 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.'); 
     } 
    } 
} 
相关问题