Операторы выбора/ Переключатель switch
⇐ ПредыдущаяСтр 3 из 3
Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков: switch(expression) // переключающее выражение { case value1: // константное выражение 1 statements; // блок операторов break; case value2: // константное выражение 2 statements; break; default: statements; }
Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали: <form action = "http://localhost/PHP/chapt2/switch.php" method="get"> number: <input type="text" name="number"/><br> <input type="submit"/> </form> <? switch($number) { case 1: echo ("one "); case 2: case 3: echo ("free"); case 4: case 5: echo ("five"); case 6: case 7: echo ("seven"); case 8: case 9: echo ("nine"); break; default: echo ("This isn't number or number is > 9 or < 1"); } ?>
Результат выполнения скрипта: Форма запроса Результат выполнения скрипта
Так же, как и в случае условного оператора для переключателей допустимы любые степени вложенности, однако злоупотреблять этим без особой на то необходимости также не следует. Кроме уже сказанного о переключателе, приведенная программа демонстрирует действие оператора break, с помощью которого происходит выход из переключателя. Если поместить операторы break после вывода каждой из цифр, то в окне браузера мы увидим название только одной нечетной цифры.
Как видим, после конструкции switch приведен составной оператор, однако это совершенно не обязательно – после switch может находиться любой оператор, помеченный служебным словом case. Напомним, что составной оператор, это заключенная в фигурные скобки последовательность операторов. Заметим также, что в PHP в качестве меток case могут использоваться не только литералы, но и сами метки могут быть переменными. В качестве меток case в PHP не могут выступать только массивы и объекты. Операторы цикла Операторы цикла задают многократное исполнение операторов в теле цикла. В PHP определены 4 разных оператора цикла: цикл с предусловием: while(condition) { statements; } цикл с постусловием: do { statements; } while(condition); итерационный цикл: for(expression1;expression2;expression3) { statements; } итерационный цикл foreach: foreach (array as [$key =>] $value) { statements; } Если 3 первых оператора цикла берут свое начало от С-подобных языков, то последний оператор позаимствован у языка Perl (кстати, цикл foreach мы разберем попозже – в главе 4, посвященной массивам). Операторы цикла/ While
Оператор while называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условие, и, если его значение отлично от нуля, выполняется тело цикла. Затем вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором while удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в C++, к примеру для определения длины строки, поскольку в С++, по определению, строка есть последовательность символов типа char, заканчивающаяся нулевым символом).
Пример простейшего цикла while: <? $var = 5; $i = 0; while(++$i <= $var) { echo($i); echo('<br>'); } ?> Этот код выдает в окне браузера цифры от одного до пяти: Для выхода из цикла применяется оператор break. При обнаружении этого оператора текущая итерация цикла прекращается, и последующие итерации не происходят. При выполнении следующего примере, несмотря на то, что переменная $var = 7, в окне браузера появятся цифры от 1 до 3. <? $var = 7; $i = 0; while(++$i <= $var) { echo($i); echo('<br>'); if($i==3)break; } ?> Иногда бывает нужно прервать только текущую итерацию, и перейти сразу к следующей. Для этого применяется оператор continue: <? $var = 7; $i = 0; while(++$i <= $var) { if($i==5) { continue; } echo($i); echo('<br>'); } ?> В этом примере выводятся цифры от 1 до 7, кроме цифры 5:
Заметим, что если Вы условный оператор поставите после операторов echo, код будет ошибочным, и выведутся все цифры от 1 до 7, поскольку проверка условия выхода из цикла на данной итерации, будет происходить уже после выполнения этой итерации. Бесконечный цикл реализуется при помощи оператора while следующим образом: while(1) { ... } Это тоже самое, что и запись while(true). Операторы цикла/ Do…while Этот оператор называется оператором цикла с постусловием. При входе в цикл в любом случае выполняется тело цикла (т.е. цикл всегда будет выполнен хотя бы один раз), затем вычисляется условие, и если оно не равно 0, вновь выполняется тело цикла. В нижеследующем примере ноль всегда будет добавлен в список, независимо от условия (++$i <= $var): <? $var = 5; $i = 0; do { echo($i); echo('<br>'); } while(++$i <= $var) ?> Результат: Цикл с постусловием бывает полезен при обработке некоторых последовательностей, когда обработку нужно заканчивать не до, а после появления концевого признака. Бесконечный цикл реализуется так: do; while(1); Операторы цикла/ For
Как уже говорилось, итерационный цикл имеет следующий формат: for(expression1;expression2;expression3) { statements; } Здесь expression1 (инициализация цикла) – последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз при входе в цикл. Как правило, здесь устанавливаются начальные значения счетчиков и параметров цикла. Смысл выражения-условия (expression2) такой же как и у циклов с пред- и постусловиями. При отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения expression3 вычисляются в конце каждой итерации после выполнения тела цикла.
В следующем скрипте, мы по традиции выведем числа от 0 до 5: <? $var = 5; $i = 0; for ($i = 0; $i <= $var; $i++) { echo($i); echo('<br>'); } ?> Результат аналогичен, показанному на предыдущем рисунке. Бесконечный цикл можно организовать следующим образом: for(;;); или for(;1;); http://www.softtime.ru/bookphp/gl2_6.php
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|