Какая разница между “===” и “==” ?

Многие просят объяснить простыми словами разницу между простым знаком сравнения “==” и тройным знаком сравнения “===” в PHP.

На самом деле всё очень просто. Как вы знаете, язык PHP нетипизированный, то есть переменные в нём как бы не имеют типа. На самом деле это не совсем так, и переменные всё-таки имеют тип, но значения разных типов в большинстве случаев будут вести себя одинаково. Например, “5” это почти то же самое, что и 5. В частности оба условия (“5” == 5) и (5 == 5) дадут нам true.

Оператор “===” (тройной оператор сравнения) введён для того, чтобы вместе со значением сравнить ещё и тип. Например, условие (“5” === 5) даст нам false.

Для чего это может быть полезно?

Во многих ситуациях это может быть полезно, а иногда применение этого оператора даже обязательно. Например, функция strpos(), которая ищет положение подстроки в другой строке, вернёт false, если подстрока не найдена. И вернёт 0, если подстрока найдена и располагается в начале строки. Единственно правильная проверка на наличие подстроки будет if (strpos($a, $b) !== false) { … }
И таких ситуаций достаточно много можно найти в документации к PHP.

Программируйте правильно!

Подписаться
Уведомление о
guest
1 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
JILeXanDR
JILeXanDR
7 лет назад

Спасибо, приму к вниманию!