PHP通过IS_FLOAT验证float

时间:2014-12-12 21:58:16

标签: php validation

我需要验证输入 - 找出输入是否为浮点数。根据网站,我的代码应该工作,但它没有。

<?php
$new_estimate=array("3.3","10.3","1.1","2.35");
$mistake="no";

for ($i=0; $i<(sizeof($new_estimate)); $i++)
    {
       if (!is_float($new_estimate[$i]))
         {
         $mistake="yes";
         }
    }

echo $mistake;
?>

我认为数组的所有值都是浮点数,但浏览器显示&#34;是&#34; - 而不是我的期望。我不明白,为什么它不起作用。

2 个答案:

答案 0 :(得分:2)

这是因为is_float()检查变量的类型是否为float,并且您正在使用字符串值数组。要验证输入,您可以使用filter_var(),如下例所示。

$new_estimate = array( "3.3", "10.3", "1.1", "2.35" );

$mistake = (bool) array_filter( $new_estimate, function( $item ) {
    return !filter_var( $item, FILTER_VALIDATE_FLOAT );
});

答案 1 :(得分:1)

这是数组中的字符串,如果您希望它们是浮点数,请删除数字周围的"。如果您打算检查数字而不是具体类型,请使用is_numericDocumentation)。

$new_estimate = array(3.3, 10.3, 1.1, 2.35);

此外,为"yes"使用字符串"no"$mistake,将它们设置为truefalse,并将该变量用作布尔值。