2014-12-12 2 views
0

Мне нужно проверить входные данные - узнайте, если входы плавают. Согласно сайтам, мой код должен работать, но это не так.PHP проверяет поплавок через IS_FLOAT

<?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; 
?> 

Я думаю, что все значения массива являются float, но браузер показывает «да» - вместо этого мое ожидание. Я не понимаю, почему это не работает.

+10

Эти строки не плавают. '$ new_estimate = array (3.3,10.3,1.1,2.35);' '' var_dump() 'покажет вам это. – AbraCadaver

+3

Удалите котировки округлых yer float – Madbreaks

+1

Ищете ['FILTER_VALIDATE_FLOAT'] (http://php.net/filter_var), возможно, когда массив образцов должен быть введен в форму? – mario

ответ

1

Это строки в вашем массиве, если вы хотите, чтобы они были поплавками, удалите " вокруг чисел. Если вы намерены проверить номера вместо конкретного типа, используйте is_numeric (Documentation).

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

Кроме того, вместо того, чтобы, используя строки "yes" и "no" для $mistake, установить их true или false и использовать переменную как логическое значение.

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); 
}); 
Смежные вопросы