ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операторы управления. Часть Вторая.


28-12-2009

3.2. Оператор
Язык PHP имеет сокращенную версию оператора if, который был позаимствован из C. В нем в качестве троичного оператора используется знак вопроса (рис. 3.2).
conditional expression ? true expression : false expression;

Условное выражение оценивается с точки зрения его значения: дает оно значение TRUE или FALSE. При значении TRUE выполняется выражение, заключенное между знаком вопроса и двоеточием, в противном случае выполняется выражение, указанное после двоеточия. Нижеприведенный фрагмент программного кода
($clientQueue > 0) ? serveClients() : cleanUp(); работает как оператор
if($clientQueue > 0) serveClients();
else
cleanUp();
Но это подобие обманчиво. Несмотря на то что сокращенная форма кажется эквивалентом использования конструкции if-else, при более детальном рассмотрении это оказывается не так. Как было сказано, оператор ? является цельным оператором, а не составной конструкцией. А это значит, что выражение всегда обрабатывается целиком и значение соответствующего выражения подставляется вместо выражения ?. Другими словами, что-то похожее на
print(true ? "это истинно" : "это ложно"); является допустимым оператором. Так как условное выражение истинно, получаем эквивалентную строку:
printC^^ истинно"); что нельзя сделать с помощью оператора if.
Оператор ? можно отнести к плохочитаемым, и он не является крайне необходимым. И вполне возможно, что вы им никогда так и не воспользуетесь. Однако этот оператор позволяет создавать достаточно компактный программный код.
3.3. Оператор switch
Альтернативой структурам if-elseif-else является оператор switch, работающий с допущением, что производится сравнение одного выражения и множества возможных значений. На рис. 3.3 продемонстрирована структура оператора switch.
Операторы управления
В операторе switch сначала задается основное выражение, а затем с помощью операторов case последовательно сравнивается его значение с возможными вариантами значений. В конце списка вариантов необходимо разместить оператор default, который работает точно так же, как оператор else, т.е. он отрабатывает, если не найдены подходящие варианты.
Обратите внимание, что операторы case не ограничиваются фигурными скобками. Это подчеркивает одно существенное различие между операторами if и switch. После обработки блока if управление передается в конец всего оператора if. В листинге 3.3, если текущий день является вторником (Tuesday), переменной deutsch_Day присваивается значение Deinstag и управление передается вниз за фигурную скобку, закрывающую блок else.
Оператор case служит стартовой точкой выполнения алгоритма. Основное выражение сравнивается с каждым выражением case до тех пор, пока не будет обнаружено совпадение. Программный код, содержащийся в этом операторе, выполняется. Оператор case, не соответствующий основному выражению, игнорируется. Иногда в этом есть смысл, но чаще всего для прекращения выполнения оператора switch используется оператор break.
Посмотрим на листинг 3.4 - здесь листинг 3.3 переписан с применением оператора switch. Самым лучшим аргументом в пользу использования оператора switch является то, что он проще и понятнее. Так как PHP позволяет сравнивать строки, оператор switch эффективнее, чем в других языках. Если у вас есть определенный опыт программирования на языке Basic, то может возникнуть естественный вопрос: "А существует ли возможность для оператора switch в PHP работать с диапазонами?" Нет, такой возможности в PHP еще не предусмотрено. Вероятно, что такую ситуацию лучше обрабатывать с помощью оператора if-elseif-else.
Операторы управления
Операторы управления

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операторы управления PHP. Операторы управления. Часть Третья.