Страницы

Поиск по вопросам

вторник, 21 мая 2019 г.

неожиданное поведение php

доброго времени суток. объясните, пожалуйста, почему
var_dump("любая строка" == 0);
возвращает
bool(true)
при этом если 0 привести к строковому или булеву типу, либо использовать жёсткое сравнение, то условие отрабатывает нормально(false). как так получается что 0 равен любой строке? php 5.6.30


Ответ

Документация
В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа.
Преобразование в число
Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль).
Соответственно при сравнении "строка" == 0, строка преобразуется в число 0

Комментариев нет:

Отправить комментарий