фича switch в php
Posted Mar.20, 2009 in Общая
Вчера наткнулся в комментариях php.net на забавную недокументированную особенность switch в php: возможность писать после case не только конкретные значения переменной, но и вполне самостоятельные условия, в т.ч. никак не связанных с самой переменной. Например:
$age = 8;
$disableAgeCheck = false;
switch($age)
{
case ($disableAgeCheck): echo “Проверка возраста отключена”;break;
case ($age<0): echo “Ещё не родился?”;break;
case 5: echo “Ровно 5 лет”;break;
case ($age<10): echo ‘Ребёнок’;break;
case ($age<20): echo ‘Подросток’;break;
default: echo ‘Взрослый’;
}
Удивительно, но все ветки, включая первую – работают правильно.
Подытожив, case работает стандартно, если в нём константа, если переменная или выражение – вычисляет и проверяет логическое значение.

January 7th, 2010 on 21:24
Кстати говоря, после этого твоего поста начал активно использовать )))
вплоть до вариантов
switch($var)
{
case ($var<10): echo "Action 1"; // выполнение не прирывается
case ($var<15): echo "Action 2";break;
case ($var<20): echo "Action 3";break;
default: echo "Action 4";
}
January 19th, 2010 on 12:02
ага) я то таке бачив=) ти що теж цікавишся ПХП?