проверить входящие данные, float

Статус
В этой теме нельзя размещать новые ответы.
а зачем разбивать? регулярное выражение заменяет твои 6 строк быдлокода, которые к тому же некорректно проверяют. Можешь написать для пользователя в качестве примера форма входных данных. К примеру: 0.00
быдлокод это вешать регулярки где попало вместо того, чтобы написать несколько строчек кода, которые будут заведомо менее ресурсоемкими. имхо.
по теме:
PHP:
 <?php
  function my_float($x, $y=2){
    if(is_float($x)){
      if((strlen($x) - strpos($x, '.') - 1) == $y){return true;}
      else{return array(false, 'Переменная является десятичной дробью, но кол-во цифр после запятой не равно ' . $y);}
    }else{return array(false, 'Переменная не является десятичной дробью');}
  }

  var_dump(my_float(100.25));
  var_dump(my_float(132.1));
  var_dump(my_float('dsadasda'));
  var_dump(my_float(654));
 ?>
 
Молодец, функция то верная...но ты не учел такого фактора
PHP:
var_dump(my_float('100.25'));

вернет false
"Переменная не является десятичной дробью"

т.а.к
PHP:
is_float('100.25') = false

Чем это грозит, я думаю рассказывать не надо.
 
быдлокод это вешать регулярки где попало вместо того, чтобы написать несколько строчек кода, которые будут заведомо менее ресурсоемкими. имхо.
по теме:
PHP:
 <?php
  function my_float($x, $y=2){
    if(is_float($x)){
      if((strlen($x) - strpos($x, '.') - 1) == $y){return true;}
      else{return array(false, 'Переменная является десятичной дробью, но кол-во цифр после запятой не равно ' . $y);}
    }else{return array(false, 'Переменная не является десятичной дробью');}
  }

  var_dump(my_float(100.25));
  var_dump(my_float(132.1));
  var_dump(my_float('dsadasda'));
  var_dump(my_float(654));
 ?>

1) Что ты знаешь вообще о ресурсоемкости? Сделай тест в цикле для 100к значений к примеру для регулярки и своей "функции" и посмотри результаты.
2) Для работы с числами с плавающей точкой есть специальная функция number_format. Но ты настолько виртуозно программируешь, что используешь для этого функцию для работы со строками. Ты гений :thenks:
 
Прег шаблон тут использовать намного удобнее, конечно если не нужно выводить подробную инфу об ошибке должна быть цифрой с плавающей точкой"не может больше 12.""должен быть больше нуля.";} Хотя это можно вывести в случае ошибки с прегом
+ Если допускается 0 учитывайте, используя (float)$_POST, что данные через пост передаются в виде строки.
Ещё на счёт написания свойх чюдо-функций, и поиска - ИДЁМ НА PHP.NET и смотрим комменты. Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху