Самое, возможно, спорное изменение произошло в поведении empty(). Строка/String, содержащая только символ '0' (нуль), теперь считается пустой/empty, в отличие от PHP 3.
Это имеет смысл в web-приложениях, когда все поля ввода/input возвращают строки, даже если запрашивается цифровой ввод, с учётом возможностей PHP по автоматической конвертации типов. Но, с другой стороны, это может нарушить работу вашего кода более утончённо, давая неправильное поведение, которое трудно отследить, если вы не знаете, искать.