Задать вопрос
StaDi
@StaDi
Курьер в it отделе

Почему такое поведение у switch`a?

Продолжаем ночную рубрику «Мне не очевидно»
switch("a"){
    case 0 : echo "0"; break;
    case "a": echo "a"; break;
}
// получим 0
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
miraage
@miraage
Старый прогер
Всё правильно. Идет несторогое сравнение.

Запустите var_dump("a" == 0);
Затем, почитайте:

php.net/manual/en/language.types.type-juggling.php
php.net/manual/en/types.comparisons.php

// EDIT

Опять же, всё описано в документации. Её всю надо изначально прочитать - как минимум, разделы про типы данных, сравнения, операторы, базовые функции для работы со строками, массивами, числами.

php.net/manual/en/language.operators.comparison.php

If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically


// EDIT2

Последняя моя цитата как раз из того же места, откуда Ваш пример. Вы просто не читаете.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽