Поиск

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

Основной условный оператор в программировании это стандартный i f (раньше он назывался ifthen, then теперь только подразумевается). Синтак сис этого оператора очень прост:

if (condition) {
statement(s) ;{

Условие должно быть заключено в круглые скобки. Раздел с инструкциями заключается в фигурные скобки и иногда называется блоком операторов. Здесь размещаются исполняемые команды, например печать строки, сложение двух чисел и т.п. Каждая отдельная инструкция (или команда) должна заканчивать ся точкой с запятой. Ограничений на количество используемых инструкций не существует, равно как и на количество вложенных блоков и операторов. Обыч но программисты располагают эти инструкции с отступом от начала строки с оператором i f , показывая таким образом, что данный блок выполняется при определенном условии. Если не использовать точку с запятой после каждой инструкции, забыть поставить открывающую, закрывающую обычную или фи гурную скобку, нечаянно поставить точку с запятой после любой из скобок, то программа будет выполняться с ошибками.

Для определения того, нужно ли выполнять инструкцию, в РНР использу ются понятия истинный (true) и ложный (false). Если значение условия истин но, то блок будет выполнен, в противном случае нет. В следующем разделе ука занные понятия рассматриваются более подробно.

Перепишем программукалькулятор (глава 4) так, чтобы она работала толь ко при условии передачи в нее значения количества. Это предотвратит выпол нение вычислений без наличия всех требуемых данных, что может вызвать неправильные результаты или ошибки на Webстраницах.

Создание условного оператора if

  • Откройте текущую версию numbers.php (листинг 6.1) в текстовом редак торе.
  • Листинг 6.1 т В исходном сценарии numbers.php производились вычисле ния, а результаты распечатывались с учетом предположения о том, что значе ния $Quantity и $Discount были получены. Это не совсем удачная програм мистская практика, такой сценарий слишком легко «взломать».

    1 <HTML>
    2 <HEAD>
    3 <TITLE>Using Numbers</TITLE>
    4 </HEAD>
    5 <BODY>
    6 <?php
    7 /* Переменная $Quantity должна быть передана в Эту страницу из формы.
    $Discount необязательна. */
    8 $Cost = 2000.00;
    9 $Тах =0.06;
    10 $Quantity = abs($Quantity);
    11 $Discount = abs($Discount);
    12 $Tax++; // Налог ($Тах) составляет 1.06.
    13 $TotalCost = (($Cost * $Quantity) $Discount) * $Tax;
    14 SPayments = round ($TotalCost, 2) / 12;
    15 // Печать результатов.
    16 print ("You requested to purchase $Quantity widget(s) at $$Cost
    each.\n<P>");
    17 print ("The total with tax, minus your $$Discount,' comes to $"J;
    18 printf ("%01.2f", $TotalCost);
    19 print (".\n<P>You may purchase the widget(s) in 12 monthly
    installments of $");
    20 printf ("%01.2f", $Payments);
    21 print (" each.\n<P>");
    22 ?>
    23 </BODY>
    24 </HTML>
  • Измените название (строка 3) следующим образом:,/ <TITLE>Conditionals</TITLE>
  • Измените строки 1023 так, чтобы в них применялся условный опера тор if.
  • if ($Quantity) {
    $Quantity = abs($Quantity);
    $DiscOunt = abs($Discount);
    $Tax++; // $Tax составляет 1.06.
    $TotalCost = «$Cost * $Quantity) $Discount) * $Tax;
    $Payments = round ($TotalCost, 2) / 1 2 ;
    // Печать результатов.
    print ("You requested to purchase $Quantity widget(s) at$$Cost
    —each.\n<P>");
    print ("The total with tax, minus your $$Discount, comes to $");
    printf ("%01.2f", $TotalCost);
    print (".\n<P>You may purchase the widget(s) in 12 monthly
    —installments of $ " ) ;
    printf ("%01.2f", $Payments);
    print ~ ( " each.\n<P>") ;

    В PHP простое использование имени переменной в качестве условия (как здесь с переменной $Quantity) является эквивалентом высказывания «Если пе ременная $Quantity существует, то есть имеет значение, отличное от нуля,...». Таким образом, в РНР могут быть выполнены следующие строки, только если значение $Quantity отлично от нуля.

  • Сохраните сценарий (листинг 6.2), загрузите его на сервер и протестируй те страницу в браузере с необходимой информацией $ Quantity и без нее (рис. 6.1 и 6.2 соответственно).
  • Листинг 6.2 т Частое использование условного оператора i f делает про граммирование более надежным, ведь перед переходом к соответствующим процессам проверяются определенные параметры. Здесь мы задаем следующее условие: вычисления производятся только после получения значения перемен ной $Quantity.

    1 <HTML>
    2 <HEAD>
    3 <TITLE>Condltionals</TITLE>

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

    Ниже в этой главе речь пойдет о том, как выполнить команды, если условие не удовлетворено. Тогда, если необходимое значение не получено, можно запро граммировать сценарий на запрос этого значения.

    Чтобы определить, существует ли переменная, можно также использовать функцию isset (). В отличие от обращения к переменной по имени, как это делалось выше, функция isset () возвратит истинное значение, если переменная равна нулю:

    $Quantity = 0;
    if ($Quantityl { ... // FALSE
    if (isset ($Quantity)) { ... // TRUE