Всем привет! Вот код: Код (Text): $a='John'; switch($a){ case 0: echo 66; break; case 'John': echo 3;break; case 1: echo 4; break; default: echo true; } В результате вылезает 66. Хотя по идее вроде 3 должно быть. Хм.... :?
PHP: <?php $a = 'John'; switch ($a) { case 'John': echo 3; break; case 0: echo 66; break; case 1: echo 4; break; default: echo true; }
при первом сравнении строки с числом строка преобразуется в число. т.к. преобразование корректно не может быть выполнено, строка преобразуется в 0. 0==0, т.е. выводится 66. всё честно. switch всегда сравнивает по ==, а не по ===.
А почему ж всё-таки 66, если смотреть мой код? Ведь 0 далеко не John. PHP вродь пропустить его должен? Иль я чёт не так понимаю.
PHP: $a='John'; switch($a){ case '0': echo 66; break; case 'John': echo 3;break; case '1': echo 4; break; default: echo true; }