Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Чим == відрізняється від === у PHP 8?

=== (тотожність) - true, лише якщо однакові і значення, і тип. == (рівність) спершу приводить операнди до спільного типу, а тоді порівнює.

1 === '1';    // false - int і string
1 == '1';     // true
0 == 'abc';   // false у PHP 8, true у PHP 7
null == false; // true
'1e3' == '1000'; // true - обидва числові рядки

Що змінив PHP 8: порівняння числа з нечисловим рядком тепер порівнює їх як рядки. Раніше 0 == 'abc' було true, бо 'abc' перетворювався на 0 - джерело реальних вразливостей у перевірках паролів і токенів.

Правило: за замовчуванням ===. == - лише коли приведення типів свідомо потрібне, і тоді краще привести явно: (int) $request->input('page') === 1.

Ще пастки ==:

  • in_array($value, $list) і array_search за замовчуванням порівнюють через ==. Третій аргумент true вмикає строге порівняння.
  • switch теж порівнює через ==; match - через ===.

Докладніше в документації: Оператори порівняння

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання