Задать вопрос

PHP и строки близкие в maxint?

Приглашаются знатоки «на подумать»)

Обнаружил странное поведение такого кода.
$id1 = '9223372036854775888';<br/>
$id2 = '9223372036854775899';<br/>
var_dump($id1 == $id2);<br/>



Результат — true. В мане сказано, что числовые строки сравниваются как целые. Чем нужно руководствоваться чтобы такое придумать? Т.е. когда заранее неизвестен вид сравниваемых строк, то можно получить что угодно на выходе.
  • Вопрос задан
  • 2840 просмотров
Подписаться 6 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
7workers
@7workers
Сделайте маленький пост в ленту, это должен знать каждый. «Баг» висит с 2007 года так что вряд ли что-то изменится: bugs.php.net/bug.php?id=43304
Ответ написан
pompeev
@pompeev
Опасная штука, у меня тоже тру ==, === фолс.

при указании типа (string) даже тру
Ответ написан
Чем нужно руководствоваться чтобы такое придумать?

Тем что PHP изначально шаблонизатор, работает с текстовыми данными (вход скрипта с веб-сервера, записи в БД, файлы — всё строки), но данные зачастую числовые по сути. Вот и «облегчили» жизнь разработчикам, чтоб не нужно было на каждый чих типы приводить.

Помню случайно наткнулся на эту сомнительную «фичу», сравнивал примерно так: $str1. 'fake' == $str2. 'fake'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽