Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 487новых вакансий за сутки·92 551вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 684
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме PHPВсе вопросы
PHPJuniorТеория

В чём разница между == и === в PHP?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

== сравнивает значения с приведением типов ("1" == 1 → true), === требует совпадения и типа, и значения. Используйте === везде, где важна корректность.

Примеры ловушек

<?php
// PHP 7 и ранее (!) — все следующие == дают true
var_dump(0 == 'foo');     // true в PHP 7, FALSE в PHP 8
var_dump(0 == '');        // true в PHP 7, FALSE в PHP 8
var_dump("1" == "01");   // true (числовые строки)
var_dump("10" == "1e1"); // true (научная нотация)
var_dump(100 == "1e2");  // true
var_dump(null == false);  // true
var_dump(null == 0);      // true
var_dump(null == "");     // true
var_dump(null == "0");    // FALSE! null == 0 == true, но "0" != ""

// === всегда предсказуем
var_dump("1" === 1);     // false (разные типы)
var_dump(null === false); // false
var_dump(1 === 1);        // true
var_dump("01" === "01"); // true

== и === в PHP

== — оператор нестрогого (loose) сравнения: PHP приводит оба операнда к общему типу перед сравнением. === — оператор строгого (strict) сравнения: значения должны совпадать и иметь одинаковый тип.

Как работает приведение типов при ==

PHP следует правилам таблицы приведения типов (type juggling). Основные случаи:

  • Число и строка: строка конвертируется в число. "1" == 1 → true.
  • Строка и null: null конвертируется в пустую строку. "" == null → true.
  • Булево и что угодно: второй операнд конвертируется в bool. "0" == false → true.
  • В PHP 7 и ниже: 0 == "abc" → true (строка без числового префикса → 0). В PHP 8 это исправлено — строка конвертируется в число только если она числовая, иначе 0 сравнивается со строкой как строка → false.

Сравнение объектов

<?php
class Point { public function __construct(public int $x, public int $y) {} }

$a = new Point(1, 2);
$b = new Point(1, 2);
$c = $a;

var_dump($a == $b);  // true  — одинаковый класс и значения свойств
var_dump($a === $b); // false — разные экземпляры
var_dump($a === $c); // true  — одна и та же ссылка

Когда использовать ==

Практически никогда в коде, где важна корректность. Единственный распространённый случай — сравнение с null через is_null() или ?? null лучше явных проверок. Предпочитайте === и !== везде.

Сортировка и spaceship-оператор

<?php
// usort с нестрогим сравнением может давать неожиданный порядок
$arr = ["10", "9", "100"];
usort($arr, fn($a, $b) => $a - $b); // числовое сравнение строк
// Лучше явно: fn($a, $b) => (int)$a <=> (int)$b

Подводные камни

  • Знаменитая ловушка PHP 7: 0 == "password" даёт true — это открывало уязвимости в аутентификации при сравнении хешей через ==. В PHP 8 поведение изменилось, но код может работать на старом PHP.
  • switch использует нестрогое сравнение (==) — используйте match (строгое) в PHP 8+.
  • in_array($needle, $haystack) по умолчанию нестрогий — передавайте true третьим аргументом для строгой проверки.
  • array_search() тоже нестрогий по умолчанию.
  • Сравнение строк с числами в PHP 7: "123abc" == 123 → true (числовой префикс парсится).
  • null == false == 0 == "" == "0" — цепочка transitive-подобных равенств при == нарушает ожидания.
  • Сравнение объектов через == сравнивает свойства, но при наличии приватных свойств или магических методов результат непредсказуем.
  • Смешение == и !== в одном выражении — источник трудноуловимых багов; выберите один стиль для проекта.

Типичные ошибки

  • Сводить loose vs strict comparison к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: интерпретируемый runtime PHP 8.x, обычно запускаемый как отдельный запрос в FPM, CLI или worker-процессе.
  • Не отделять validation, authorization, transaction boundary и business logic.
  • Менять похожие API местами без учёта семантики ошибок и ownership.

Что проверяет интервьюер

  • Объясняет loose vs strict comparison через конкретную точку lifecycle в PHP.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.

Как вы знаете этот вопрос?

Проверить себя по теме PHP →

Источники

  • https://www.php.net/manual/en/language.operators.comparison.php
  • https://www.php.net/manual/en/
←Предыдущий вопросВ чём разница между interface и abstract class в PHP?Следующий вопрос→В чём разница между `include`, `require`, `include_once` и `require_once`?

Связанные темы

PHPBackend-Engineeringphp-ecosystem

Вакансии с этим навыком

PHP вакансии
  • PHP Developer with React
  • Senior PHP Developer (SaaS)
  • Fullstack Developer (React, Next.js, PHP, AI)
  • PHP Developer
  • Senior Full-Stack Engineer (NestJS and React) (#6021)

Частые вопросы на собеседовании

  • Как предотвратить SQL injection в PHP?
  • Что такое PHP traits и чем они отличаются от интерфейсов и абстрактных классов?
  • Каковы основные возможности PHP 8.x (named arguments, match expression, nullsafe operator, fibers)?
  • Что такое суперглобальные переменные (superglobals) в PHP? Назовите наиболее распространённые.