Равенство и идентичность
Часть раздела Основы путешествия по 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
// Чтение ввода
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));
// TODO: Напишите свой код ниже
// Используйте var_dump() для печати результата каждого сравнения на новой строке:
// 1. Не строгое равенство (==)
// 2. Строгое равенство (===)
// 3. Не строгое неравенство (!=)
// 4. Строгое неравенство (!==)
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравненияРавенство и идентичностьЛогические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логика2Переменные и типы данных
ЧислаСтроки и кавычкиБулевы значенияСоглашения об именованииПовторение — инициализация переменныхПустые переменныеКонкатенация строкПолучение пользовательского вводаПриведение к другим типам5Условная логика
Оператор ifIf — ElseТернарный операторОператор нулевого слиянияОператор switchПовторение: принятие решений3Основные операторы
Арифметические операторыОператор остатка от деленияОператор возведения в степеньСоставное присваиваниеИнкремент/декрементПриоритет операторовПовторение — простые вычисленияОператоры строкПотренируйтесь самостоятельно: Онлайн-компилятор PHP