我需要验证输入 - 找出输入是否为浮点数。根据网站,我的代码应该工作,但它没有。
<?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; - 而不是我的期望。我不明白,为什么它不起作用。
答案 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_numeric
(Documentation)。
$new_estimate = array(3.3, 10.3, 1.1, 2.35);
此外,为"yes"
使用字符串"no"
和$mistake
,将它们设置为true
或false
,并将该变量用作布尔值。