• ("PHP" == 0) => true, зачем?

    Практическое применение:

    Поле ввода, которое подразумевает числовое значение, например, сумма перевода. Пользователь вводит строку «тыща баксов». Нормальной валидации нет (почему — отдельный вопрос). Перевод уходит только если сумма больше нуля. Строка преобразуется в ноль и перевод не уйдёт. Если бы преобразовалась в 1 (true), то перевод бы ушел с не очевидной для пользователя суммой, минимум багофича. А ещё лучше в -1 (true true :) ) и вообще никакой валидации — перевод бы получился отрицательным — критический баг.

    PHP, имхо, разрабатывался так, чтобы снизить число таких критических багов.
    Ответ написан
    3 комментария
  • ("PHP" == 0) => true, зачем?

    @gro
    Здесь неоднократно дали правильный ответ — «строка приводится к числу», но почему так делается для многих даже правильно ответивших неочевидно.
    Вообще всё просто — в $_GET и $_POST всегда строки, хотя некоторые переменные подразумеваются числовыми, из базы тоже зачастую даже числовые поля приходят в строковом виде, ну и одна из основных задач PHP — обработка текста (в том числе XML), где опять-таки приходится работать с числами в виде строк.
    Поэтому строки и рассматриваются зачастую, как числа.
    Ответ написан
    2 комментария