А еще, например, нельзя проверять вхождение подстроки в строку, используя выражения типа:
if (!strpos($haystack, $needle) {
потому что строка может начинаться с искомой подстроки и функция вернет 0, который без явного сравнения типов (оператор ===) не даст сработать условию правильно.
Вообще лояльность PHP к типам переменных может быть причиной довольно коварных багов. Так что нужно иметь хотя бы базовое представление о
сравнении переменных разных типов чтобы не наступать на эти грабли.