PHP странное поведение оператора ==
потому что, второй аргумент в операторе == приводится к типу первогого аргумента, следовательно (int)'sell' === 0 отсюда 0 == 0 дает true.
А еще, например, нельзя проверять вхождение подстроки в строку, используя выражения типа:

if (!strpos($haystack, $needle) {

потому что строка может начинаться с искомой подстроки и функция вернет 0, который без явного сравнения типов (оператор ===) не даст сработать условию правильно.

Вообще лояльность PHP к типам переменных может быть причиной довольно коварных багов. Так что нужно иметь хотя бы базовое представление о сравнении переменных разных типов чтобы не наступать на эти грабли.