检查数组中的每个元素是否为正整数,而不是浮点数

时间:2012-08-31 00:49:49

标签: php

首先,我仍然是一个使用php的菜鸟,而我所学到的很多东西都是来自我自己也有过这个网站的问题。

我在这里找到了所有原始问题的答案,但是当我把它们放在一起时,我无法让代码工作。

我有一个使用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.' );
        }
    }
}

无论我输入任何输入字段,它总是会返回“die”错误。

4 个答案:

答案 0 :(得分:3)

is_float(amount)

应该是

is_float($amount)

答案 1 :(得分: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.' );
        }
    }
}

答案 2 :(得分:0)

代码中的错字。将is_float(amount)替换为is_float($amount)

答案 3 :(得分:0)

试试这个。

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