доброго времени суток. объясните, пожалуйста, почему
var_dump("любая строка" == 0);
возвращает
bool(true)
при этом если 0 привести к строковому или булеву типу, либо использовать жёсткое сравнение, то условие отрабатывает нормально(false
). как так получается что 0 равен любой строке? php 5.6.30
Документация
В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа.
Преобразование в число
Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль).
Соответственно при сравнении "строка" == 0
, строка
преобразуется в число 0
Потому что "любая строка" приводится к int. А int от неё - 0.
Но 0 равен не любой строке. Попробуйте "123любая строка"
Жесткое сравнение сначала сравнивает типы.
ты используешь == который сортирует типы данных за тебя.
0 целочисленная переменная, в вашей проблеме строка прикастится к 'e' в целочисленную переменную. которая не парсится, и будет равно 0. строка '0e' тоже будет 0, и будет совпадать! НО! строка '1e'не равна 0 а равна 1
вместо этого используй === на примере https://ideone.com/3sZY7N
var_dump("любая строка" == 0); //true
var_dump("любая строка" === 0); //false
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как дописать программу? Дан многострочный файл с текстом, подсчитать кол-во гласных и согл букв и вывести их второй файл
Я пытаюсь сделать фильтр по таксономии (ещё один тип меток)Фильтр работает сортируя только один тип записи, но когда я выбираю несколько - они...
Всем Привет, Может кто сказать как вставить в бд данные по индексам ? Вот например код который просто вставляет данные в бд