Глава 14. Структуры принятия решений. Повторное использование кода

Содержание

14.1. Структуры принятия решений
14.1.1. Оператор If
14.1.2. Оператор switch
14.2. Циклические структуры
14.2.1. Циклы while
14.2.2. Циклы do while
14.2.3. Цикл for
14.3. Повторное использование кода и функции
14.3.1. Включаемые файлы
14.3.2. Использование функций

В главе использованы материалы [FLOYD].

14.1. Структуры принятия решений

14.1.1. Оператор If

При создании кода часто требуется выполнять различные действия на основе некоторого выбора. В PHP это можно делать с помощью условных операторов – оператора if, оператора if … else и оператора elseif.

if – этот оператор используется для выполнения блока кода, когда выполняется условие ( true ).

if...else – этот оператор используется для выполнения блока кода, когда условие выполняется ( true ), или для выполнения другого блока кода, когда условие не выполняется ( false ).

elseif – комбинация if и else. Оператор расширяет оператор if, чтобы выполнялся другой оператор в случае, если исходное выражение if оценивается как FALSE. В отличие от else он будет выполнять альтернативное выражение, только если условное выражение elseif оценивается как TRUE.

В том случае, когда необходимо выполнить блок кода, если выполняется некоторое условие ( true ), можно использовать оператор if.

Ниже представлен синтаксис оператора if:

if (условие) {

  // выполняемый код

}

Строки кода оператора if заключаются в фигурные скобки ( {} ). Эти скобки определяют начало (открывающая скобка { ) и конец (закрывающая скобка } ) оператора If. Следующий пример демонстрирует использование оператора if.

<?php

$number = 5;

if ($number <= 10)

{

        echo "Число меньше или равно 10.";

}

?>

Число меньше или равно 10.

В приведенном выше примере число 5 присваивается переменной $number. Затем сценарий PHP использует оператор сравнения "<=" (меньше или равно) для сравнения значения $number с числом 10. Если значение меньше или равно 10, оператор echo выводит сообщение " Число меньше или равно 10" в окне браузера. Можно видеть, что скобки применяются для ограничения блока оператора if. Открывающая скобка { появляется сразу после оператора условия, а закрывающая скобка } — в конце оператора if.

Вспомните, что все операторы PHP должны завершаться с помощью терминатора инструкции ( ; ): echo "Число меньше или равно 10.";

В некоторых случаях может понадобиться предоставить альтернативное сообщение. В приведенном выше примере предположим, что переменная $number содержит число 15, которое больше 10. Альтернативное сообщение должно выводиться, чтобы пользователь знал: число больше 10. Это можно выполнить с помощью оператора if … else.

<?php

$number = 15;

if ($number <= 10) {

        echo "Число меньше или равно 10.";

}

else {

        echo "Число больше 10";

}

?>

Число больше 10.

В приведенном выше примере число 15 присваивается переменной $number. Затем сценарий PHP использует оператор сравнения "<=" (меньше или равно) для сравнения значения $number с числом 10. Если это значение меньше или равно 10, оператор echo выводит сообщение "Число меньше или равно 10" в окне браузера. Теперь в код добавлен оператор else, чтобы выводить альтернативное сообщение, если условие в операторе if не выполняется. Альтернативное сообщение "Число больше 10" выводится в окне браузера, если оператор условия возвращает false. Здесь также используются скобки для ограничения блока оператора if. Открывающая скобка { появляется сразу после оператора условия, а закрывающая скобка } — в конце оператора if. Скобки также используются для ограничения альтернативного блока оператора else.

Третий тип условного оператора является структурой elseif. Оператор elseif является комбинацией if и else. Подобно else он расширяет оператор if, чтобы выполнить другой оператор, если условное выражение исходного if оценивается как FALSE. Однако в отличие от else он будет выполнять это альтернативное выражение, только если условное выражение в elseif оценивается как TRUE. В одном операторе if может быть несколько структур elseif. Первое выражение elseif (если такое имеется), которое оценивается как TRUE, будет выполнено.

<?php

$number = 15;

if ($number < 10) {

        echo "Число меньше 10.";

}

elseif ($number == 10) {

        echo "Число равно 10.";

}

else {

        echo "Число больше 10.";

}

?>

Число больше 10.

В этом примере числовое значение переменной $number сравнивается с 10. Сперва оператор if проверяет, что $number меньше 10. Если этот оператор выполняется ( true ), выводится сообщение "Число меньше 10". Затем оператор elseif используется для проверки, что $number равно 10. Если этот оператор оценивается как true, выводится сообщение "Число равно 10". Оператор elseif выполняется, ТОЛЬКО если оператор if возвращает FALSE. Наконец, если операторы if и elseif возвращают FALSE, выполняется оператор else и выводится сообщение "Число больше 10". В то время как оператор elseif позволяет проверить только одно условие, структуру if можно применять для проверки множества условий.

Следующий пример использует функцию checkdate(), функцию explode() и оператор if … else для проверки правильности строки даты.

<?php

$orig_date = "09/19/2005";

$date = explode("/", "$orig_date");

$month = $date[0];

$day = $date[1];

$year = $date[2];

$result = checkdate($month, $day, $year);

if ($result == true)

{

echo "Правильная дата";

}

else

{

echo "Неправильная дата!";

}

?>

Правильная дата

Операторы if можно использовать "в одиночку" либо как часть оператора if...else или if...elseif...else. В любом случае вы обнаружите, что эта структура будет важным элементом в любой программе.

14.1.2. Оператор switch

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

switch – используйте этот оператор для выбора одного из нескольких блоков кода для выполнения.

Ниже представлен синтаксис оператора switch.

<?php

switch (выражение) {

case "значение1":

// код, который будет выполнен, если выражение = значение1;

break;

case "значение2":

// код, который будет выполнен, если выражение = значение2;

break;

default:

// код, который будет выполнен, если выражение не равно ни значение1, ни значение2;

}

?>

Подобно оператору if строки кода в операторе switch заключаются в фигурные скобки.

Эти скобки определяют начало и конец оператора switch. Следующий пример демонстрирует использование оператора switch.

<?php

$number = 25;

switch ($number) {

case 40:

        echo "Значение \$number равно 40";

        break;

case 25:

        echo "Значение \$number равно 25";

        break;

default:

        echo "Значение \$number отлично от 25 и 40";

}

?>

Оператор switch может включать множество операторов case. В предыдущем примере показаны два оператора case. Создается переменная $number, которой присваивается значение 25. Оператор switch используется для сравнения значения $number с другими значениями. Проверяемое (сравниваемое) выражение (в данном случае $number ) помещается внутри скобок сразу после оператора switch. Затем вызывается последовательность операторов case для сравнения выражения с другими значениями. Эти значения помещаются сразу после оператора case. (Примечание: если проверяемые значения являются строками, они должны заключаться в кавычки.) За значением, которое сравнивается с выражением, следует двоеточие ( :). Операторы case аналогичны конструкциям if и elseif. Если значение оператора case будет true, то выполняется код, связанный с этим оператором, и оператор break. Оператор break приводит к завершению оператора switch. Остальные операторы case проверяться не будут. В конце оператор switch содержит инструкцию default. Она аналогична оператору else. Если ни один из операторов case не будет выполнен (не будет иметь значение TRUE ), выполняется оператор default. Здесь одновременно происходит несколько вещей:

1.проверяется условие switch и находится значение ( $number == 25 );

2.значение условия передается по очереди операторам case ;

3.если это значение совпадает со значением case, выполняется код этого блока. Оператор break приводит к завершению оператора switch. Остальные операторы case не проверяются;

4.если проверяемое значение не совпадает ни с одним из значений case, выполняется раздел default ;

5.в приведенном выше примере, так как выражение "значение $number" равно 25, выполняется второй оператор case, и в окне браузера выводится текст "Значение $number равно 25".