Equality & Identity
Часть раздела Основы путешествия по PHP на Coddy — урок 24 из 71.
PHP предоставляет два способа проверить, равны ли значения: оператор равенства (==) и оператор идентичности (===). Понимание разницы крайне важно для написания надежного кода.
Оператор равенства (==) сравнивает значения после их преобразования к одному типу. Это называется «нестрогим сравнением»:
<?php
var_dump(5 == "5"); // bool(true) - строка преобразована в число
var_dump(0 == false); // bool(true) - оба становятся 0
var_dump(1 == true); // bool(true) - оба становятся 1
?>Оператор идентичности (===) сравнивает и значение и тип. Никакое преобразование не происходит, поэтому оба должны совпадать точно:
<?php
var_dump(5 === "5"); // bool(false) - int против string
var_dump(5 === 5); // bool(true) - одинаковый тип и значение
var_dump(0 === false); // bool(false) - int против bool
?>Для сравнений «не равно» используйте != (нестрогое) или !== (строгое):
<?php
var_dump(5 != "5"); // bool(false) - значения равны
var_dump(5 !== "5"); // bool(true) - типы различаются
?>В качестве лучшей практики отдавайте предпочтение === и !==, чтобы избежать неожиданных сюрпризов при приведении типов.
Задание
ЛегкоПрочитайте два значения из ввода: число (как строку) и целое число.
Используйте операторы равенства и идентичности для оценки следующих сравнений и выведите результат каждого с помощью var_dump(), каждый на новой строке:
- Проверьте, равно ли строковое значение целому числу с помощью нестрогого сравнения (
==) - Проверьте, равно ли строковое значение целому числу с помощью строгого сравнения (
===) - Проверьте, не равно ли строковое значение целому числу с помощью нестрогого сравнения (
!=) - Проверьте, не равно ли строковое значение целому числу с помощью строгого сравнения (
!==)
Примечание: Оставьте первое значение строкой (не приводите его тип). Приведите второе значение к целому числу.
Пример:
Если входные данные 42 и 42, вывод должен быть:
bool(true)
bool(false)
bool(false)
bool(true)Объяснение:
"42" == 42истинно (значения равны после приведения типов)"42" === 42ложно (строка против int — разные типы)"42" != 42ложно (значения равны)"42" !== 42истинно (типы разные)
Шпаргалка
PHP имеет два способа сравнения значений:
Оператор равенства (==) — нестрогое сравнение, которое преобразует значения к одному типу перед сравнением:
<?php
var_dump(5 == "5"); // bool(true) - string converted to number
var_dump(0 == false); // bool(true) - both become 0
var_dump(1 == true); // bool(true) - both become 1
?>Оператор идентичности (===) — строгое сравнение, которое проверяет и значение, и тип:
<?php
var_dump(5 === "5"); // bool(false) - int vs string
var_dump(5 === 5); // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>Операторы неравенства:
<?php
var_dump(5 != "5"); // bool(false) - values are equal (loose)
var_dump(5 !== "5"); // bool(true) - types differ (strict)
?>Лучшая практика: используйте === и !==, чтобы избежать неожиданного преобразования типов.
Попробуйте сами
<?php
// Чтение ввода
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));
// TODO: Напишите свой код ниже
// Используйте var_dump() для печати результата каждого сравнения на новой строке:
// 1. Не строгое равенство (==)
// 2. Строгое равенство (===)
// 3. Не строгое неравенство (!=)
// 4. Строгое неравенство (!==)
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators