Я попытался запустить ваш код, но я получил notnot
в первые несколько попыток. Только после понижения версии php до 5.4.3 или ниже я получил matchnot
.
Похоже, вы работаете на устаревшей версии php и обнаружили эту ошибку . Это было решено начиная с php5.4.4.
Лучшее, что можно сделать, - это обновить версию php (хотя в любом случае строгое сравнение не так уж плохо)
Редактировать : Судя по комментариям к исходному ответу, похоже, что проблема сохраняется и в более поздних версиях, но только в 32-битных системах.
Сама проблема возникает из-за того, что php крайне неэффективен при сравнении, преобразовывая строки, которые выглядят как числа, в числа перед сравнением. Это приводит к тому, что php считает "1e3" равным, например, 1000.