Пустая строка < 0 при неявном приведении? [дубликат] ⇐ Php
Пустая строка < 0 при неявном приведении? [дубликат]
Я узнал (на собственном горьком опыте), что "" < 0 оценивается как bool(true), а (int)"" < 0< /code> возвращает bool(false) и никогда не задавался этим вопросом, но теперь хочу знать, почему (и почему до PHP8 все было по-другому).
Это не только нелогично, но и не соответствует документации. Для сравнительного контекста показана эта таблица, из которой следует, что любая строка будет неявно преобразована к числу, если другой операнд имеет тип string, resource< /code>, int или float, поэтому я ожидаю, что "" < 0 выдаст значение bool(false), поскольку (int)"" оценивается как int(0).
var_dump('' < 0); // логическое значение (истина) var_dump((int)''
Я узнал (на собственном горьком опыте), что "" < 0 оценивается как bool(true), а (int)"" < 0< /code> возвращает bool(false) и никогда не задавался этим вопросом, но теперь хочу знать, почему (и почему до PHP8 все было по-другому).
Это не только нелогично, но и не соответствует документации. Для сравнительного контекста показана эта таблица, из которой следует, что любая строка будет неявно преобразована к числу, если другой операнд имеет тип string, resource< /code>, int или float, поэтому я ожидаю, что "" < 0 выдаст значение bool(false), поскольку (int)"" оценивается как int(0).
var_dump('' < 0); // логическое значение (истина) var_dump((int)''
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение