Quizás el cambio de comportamiento más controversial ha ocurrido con empty(). Una cadena que contenga solo el caracter '0' (cero) es considerada vacía, mientras que en PHP 3 no era así.
Este nuevo comportamiento tiene sentido en aplicaciones web, dado que todos los campos de entrada devuelven cadenas incluso si se solicitan valores numéricos, y dadas las capacidades de conversión automática de tipos de PHP. Pero, por otra parte, puede dañar su código en formas sutiles, causando comportamientos exóticos que son difíciles de rastrear si no sabe qué buscar.