Окт 23

Ошибка наверное все таки не php, а моя собственная, хотя кто его знает может так и должно обрабатываться …

Итак как я наступил на эти грабли: в массиве $_REQUEST лежит переменная operator в переменной значение 0, в операторе if сравниваю значение этой переменной с нулем

if ($_REQUEST["operator"] != 0)
   echo "Not ok";
else
   echo "Ok";

И вижу на выводе “Not ok”. Я точно знаю что в переменной $_REQUEST[“operator”] лежит ноль, более того я вижу это распечатав массив $_REQUEST, командой print_r($_REQUEST);

Далее я ушел в небольшой ступор, и даже пригласил сотоварища посмотреть свежим взглядом что не так.

Пока товарищь шел, за эти 5 секунд я поставил ноль в кавычки, и оппа все заработало, и товарищь выпалил что нужно поставить !== (восклицательный знак и два равно), хм всю жизнь сравнивал == или !=, полез в документацию разбираться с темой.

В документации написано:
$a !== $b Неидентичность True, если $а не равно $b, или они разного типа

Товариш был не прав, но его указание из этой темы.

Копаем дальше, функцией gettype($_REQUEST[“operator”]) выясняю что у меня из формы нуль приходит строкового типа, а нуль без кавычек естественно числовой тип. Хм. ну и что PHP слабо типизированный язык программирования, когда нужно приведение типов должно сработать автоматом, но у меня в скрипте в IF этого не произошло 🙁

Итого: Или это у меня такая версия php, или учить php лучше надо было, блин и такие грабли после 3,5 лет программирования на php, стыд и позор.

автор: \\ теги: , ,