==
и !=
проверяют равенство по значению, и в PHP вы можете сравнивать различные типы, в которых определенные значения называются эквивалентными.
Например, "" == 0
оценивается как true
, хотя один является строкой, а другой целым числом.
===
и !==
проверьте тип и значение.
Итак, "" === 0
будет оцениваться до false
.
Редактировать: Чтобы добавить еще один пример того, как это «жонглирование» может вас поймать, попробуйте это:
var_dump("123abc" == 123);
Дает bool(true)
!