За последние 24 часа нас посетили 20606 программистов и 1106 роботов. Сейчас ищут 337 программистов ...

A non-numeric value encountered

Тема в разделе "PHP для новичков", создана пользователем Дюран, 13 ноя 2020.

  1. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    250
    Симпатии:
    19
    Привет.
    Народ, а как вы вообще относитесь к тому что начиная с php7.1 простой кажется код:
    Код (Text):
    1. print '' + 2.5;
    выдает warning:
    WARNING A non-numeric value encountered on line number 3

    При этом если вместо пустой строки будет null или false то оно в ноль их преобразует, а вот пустую строку без варнинга не хочет.
    Вот так все время преобразовывать?
    Вроде основы как раз php были в том что само преобразует типы..
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    Положительно. Не пропускайте совсем уж жесть, и все будет норм.
    '' + 2.5 – жесть :(
    '0' + 2.5 – не жесть :)
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    это не основы... это нестрогая типизация, и приведение всего и все ко всему)))
    и очень часто дает непредсказуемый результат... сейчас php повзрослел, и идет к строгой типизации
     
  4. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    250
    Симпатии:
    19
    С пустой строкой приходят все формы, это как значение по умолчанию.
    От '0' оно сильно отличается. Ноль - это осознанный ввод, когда пользователь его ввел.
    А когда он например поле не заполнил, он не захочет чтобы там появились нули вместо "пусто".
    Понятно что сейчас я подгадал как все это сделать.
    Но традиционно это все - empty значения, по названию функции считающей их такими, че его к нулю не приводит, когда:
    Код (Text):
    1. print empty('0') === empty('');
    Они даже в документации эту особенность не объясняют: