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.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операторы управления. Часть Вторая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операторы управления | PHP. Операторы управления. Часть Третья. |