StaDi
@StaDi
Курьер в it отделе

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

Продолжаем ночную рубрику «Мне не очевидно»
switch("a"){
    case 0 : echo "0"; break;
    case "a": echo "a"; break;
}
// получим 0
  • Вопрос задан
  • 163 просмотра
Решения вопроса 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

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

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

Похожие вопросы