В избранное    Домой   

Суббота,  20 Apr 2024 г., 15:47
Лучше жить в углу на кровле, нежели  со сварливой женой в пространном доме. /Притчи/

 Логин:  

 Пароль: 




Анонсы:
=== Дата: 15/07/2011     Автор: Крис Ньюман ===

PHP. Урок 3 Управление порядком выполнения

Урок 3. Управление порядком выполнения

На этом уроке вы научитесь управлять порядком выполнения сценария с помощью циклов и условных операторов.

В этой главе рассматриваются два типа структур для управления сценарием: условные операторы, которые позволяют выполнять определенную часть кода при выполнении заданного условия, и циклы, которые позволяют выполнять блок кода несколько раз.

Условный оператор

Условный оператор в PHP состоит из ключевого слова if и условия в круглых скобках. В следующем примере проводится проверка того, что $number меньше 10, и только в этом случае оператор echo выводит на экран сообщение:

$number = 5;
if ($number < 10) {
    echo "$number меньше десяти";
}

Условие $number < 10 удовлетворяется только в том случае, если значение слева от символа < меньше значения справа. Если условие истинно, - выполняется код в фигурных скобках. Иначе сценарий перейдет к следующему выражению после закрывающей фигурной скобки.

Булевы значения. Любое условное выражение возвращает булево значение. Оператор if использует значения TRUE и FALSE, чтобы определить, нужно ли выполнять следующий блок. Все нулевые значения рассматриваются как FALSE, а все ненулевые - как TRUE.

Предыдущее выражение возвращает TRUE, потому что 5 меньше 10. В результате выполняется код в фигурных скобках, и генерируется соответствующий вывод. Если заменить значение переменной $number на 10 или выше и перезапустить сценарий, условие не выполнится и на выходе будет пусто.

Фигурные скобки используются для группирования блока кода. В условном выражении они окружают код, который выполняется, если условное выражение истинное.

Необязательно ставить фигурные скобки после условного оператора if. Если они опущены, а условие истинно, выполняется первое после оператора if выражение. Все последующие выражения выполняются независимо от истинности условия оператора if.

Фигурные скобки и отступы. Несмотря на то что PHP не требует отступов, лучше поставить несколько пробелов перед выражениями внутри фигурных скобок. Это визуально отделяет блок кода от других выражений.
Даже если условный оператор или цикл используется для одного выражения, лучше ставить фигурные скобки. Это повысит читабельность кода, когда используется несколько вложенных конструкций.

Операторы сравнения

В PHP существует много операторов для сравнения двух значений. Операторы показаны в табл. 3.1.

Таблица 3.1. операторы сравнения PHP

Оператор Описание
== равно
=== Строгое равенство
!= Не равно
!== Нестрогое равенство
< Меньше чем
<= Меньше или равно
> Больше чем
>= Больше или равно

=или == ? Нужно осторожно использовать символ двойного равенства (==). Одиночный символ = всегда значит присваивание, и условие будет истинным, если присваиваемое значение истинно. Кроме того, нужно помнить, что TRUE - любое ненулевое значение. В большинстве случаев для сравнения лучше использовать ==.

Логические операторы

Чтобы проверить одновременное выполнение ряда условий, можно комбинировать несколько критериев в одном условном выражении. В примере ниже проверяется, находится ли $number между 5 и 10:

$number = 8;
If ($number >= 5 and $number <= 10) {
    echo "$number не меньше пяти и не больше десяти";
}

Ключевое слово and - это логический оператор, который принимает истинное значение только в случае, когда выражения слева и справа истинны. То есть $number должен быть больше или равен 5 и меньше или равен 10.

Таблица 3.2. Логические операторы в PHP

Оператор Название Описание
! a NOT (отрицание) Истина, если a ложь
a && b AND (И) Истина, если a и b истинны
a || b OR (ИЛИ) Истина, если a или b истинны
a and b AND (И) Истина, если a и b истинны
a xor b XOR (исключающее ИЛИ) Истина, если a или b истинны, но не одновременно
a or b OR (ИЛИ) Истина, если a или b истинны

Есть два способа выполнить логическое И и ИЛИ в PHP. Разница между and и && (а также меду or и ||) в приоритете при выполнении вычислений. В табл. 3.2 операторы перечислены в порядке снижения приоритета. Следующие выражения очень похожи, но выполняют различные операции:

a or b and с
a || b and c

В первом условии and имеет высший приоритет и выполняется первым. В целом условие будет истинным если a истинно или b и c истинны. В следующем условии || имеет высший приоритет. Поэтому, чтобы получить истинное значение, c должно быть истинным, а также a или b.

Множественное условное ветвление

С помощью оператора else в выражении if можно задать альтернативное действие, если условие не удовлетворяется. В следующем примере устанавливается, больше или меньше десяти значение переменной $number:

$number = 16;
If ($number < 10){
    echo "($number меньше десяти";
}
else {
    echo "($number больше десяти";
}

Оператор else позволяет реализовать альтернативное поведение для условного оператора. Чтобы добавить несколько ответвлений, используется ключевое слово elseif. Этот оператор проверяет следующее условие, если предыдущее не сработало.

В следующем примере функция date("H") возвращает текущий час - число от 0 до 23. на экране получим соответствующее приветствие:

$hour = date("H");
if ($hour < 12) {
    echo "Доброе утро";
}
elseif ($hour < 17) {
    echo "Добрый день";
}
else {
    echo "Добрый вечер";
}

На выходе получим Доброе утро, если время на сервере за полночь м не больше 11:59. Добрый день, если - за полдень и не больше пяти вечера. Добрый вечер - от пяти вечера и больше.

Как видно, в elseif проверяется, чтобы $hour не превышало 17. но нет проверки на полный диапазон между 12 и 17. так сделано потому, что if выполняет проверку на меньшее 12, т.е. программа не дойдет до блока elseif, если $hour меньше 12.

Если все условия нарушаются, выполнится код в блоке else. Для значений $hour 17 и выше в условиях if и elseif получим ложное значение.

Выражение switch

Конструкция if позволяет разместить произвольное количество операторов elseif, но такая структура очень запутанная. Выражение switch имеет более компактный вид и является альтернативой условному выражению с множеством ветвлений. В примере ниже выражение switch проверяет значение $name на принадлежность к одному из списков:

switch ($name) {
    case "Дима":
    case "Таня":
        echo "Привет, $name, ты мой друг";
        break;
    case "Адольф":
    case "Саддам":
        echo "Ты мне не друг, $name";
        break;
    default:
        echo "Я тебя не знаю, $name";
}

Каждое case-выражение задает значение, для которого будет выполнятся соответствующий код. Если присвоить имя переменной $name и запустить сценарий, на экране браузера появится приветствие другу, если ваше имя Дима или Таня. Но если вы Адольф или Саддам, вас опознают как недруга. С другим именем программа не узнает вас.

В операторе switch может быть любое количество case-выражений. Если тестируемое значение (в нашем случае переменная $name) соответствует одному из них, весь PHP-код после выражения case будет выполняться до первой команды break.

Остановка выполнения. Оператор break играет существенную роль в операторе switch. Когда выполняется условие оператора case, PHP-код будет выполнятся дальше, включая следующее выражение case, которое будет проверять другое значение. В отдельных случаях такое поведение может понадобится, но обычно ожидается другое. Поэтому нужно ставить оператор break после каждого выражения case.

При других значениях $name выполняется блок кода выражения default. Как и else, default является необязательным и выполняется, только если выше не обнаружено ничего подходящего.

Циклы

В PHP есть три типа циклов. Они позволяют выполнять блок кода определенное количество раз, но имеют некоторые различия.

Цикл while

После ключевого слова while следует условие в круглых скобках, а за ним - блок кода (тело цикла). Тело цикла будет выполнятся до тех пор, пока условие в скобках будет истинным. Если условие станет ложным, цикл завершится, и тело цикла перестанет выполнятся.

Бесконечный цикл. Условие цикла должно изменяться в теле таким образом, чтобы в определенный момент нарушить его. В противном случае цикл может выполняться бесконечно.

Ниже приводится пример, где в цикле while подсчитывается квадрат чисел от 1 до 10:

$count = 1;
while ($count <= 10) {
    $square = $count * $count;
    echo "Квадрат $count равен $square <br>";
    $count++;
}

Вначале переменная-счетчик $count инициализируется единицей. В теле цикла while подсчитывается квадрат числа, и увеличивается значение переменной $count. Оператор ++ (инкремент) увеличивает значение переменной, за которой он стоит, на единицу.

Цикл будет повторятся до тех пор, пока выполняется условие $count <= 10, поэтому на экране получим квадрат всех чисел от 1 до 10.

Цикл do

Цикл do отличается от while тем, что условие находится после тела цикла. Из-за этого отличия цикл do выполняется как минимум один раз, даже если условие изначально ложно.

Следующий пример цикла do выводит числа и их квадраты от одного до десяти:

$count = 1;
do {
    $square = $count * $count;
    echo "Квадрат $count равен $square <br> ";
    $count++;
} while ($count <= 10);

Цикл for

Конструкция for позволяет создавать циклы в более компактной форме. В следующем примере на выходе получим то же, что и в двух предыдущих:

for ($count=1; $count <= 10; $count++) {
    $square = $count * $count;
    echo "Квадрат $count равен $square <br>";
}

Как видно, конструкция for позволяет использовать значительно меньше кода, чтобы выполнять действия аналогичные while и do.

Выражение for состоит из трех частей, разделенных точкой с запятой:

  • Первая часть выражения вычисляется только один раз перед началом выполнения цикла. В предыдущем примере в этой части инициализирована переменная $count.
  • Вторая часть содержит условие. Если условие истинно, выполняется тело цикла. Как и в случае цикла while, при нарушении условия, тело цикла больше не выполняется.
  • Третья часть выражения вычисляется каждый раз в конце каждого витка (итерации) цикла. В предыдущем примере, $count увеличивается на единицу после вывода очередной строки.

Вложенные условия и циклы

До этого рассматривались только простые примеры циклов и условий. Но применение управляющих конструкций этим не ограничивается. Можно вкладывать циклы и условные операторы друг в друга и получать сложные правила для управления порядком выполнения сценария.

Обрыв выполнения цикла

Выше оператор break использовался в выражении switch. Кроме того, оператор break позволяет завершить выполнение цикла и продолжить выполнение сценария.

Ключевое слово continue позволяет завершить текущую итерацию цикла. Но, в отличие от break, сценарий переходит на начало цикла и продолжает выполнение, пока не нарушиться условие цикла.

Резюме

В этом уроке вы узнали, как управлять порядком выполнения сценария с помощью условных операторов и циклов. В следующем уроке вы узнаете о том, как создавать повторно используемые функции из блоков PHP-кода.


<<назад

Погода в Рудне
(Волгоградcкая обл.)

Подробнее >>


Курс валют
на 20 Апр 2024 г.
704 - Вьетнамских донгов
- 1