Поиск

Совместное использование различных операторов

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

$Number = 1 0 4 / 2 ;

Будет ли результатом число 3 (сначала вычитаем, потом делим) или 8 (сна чала делим, потом вычитаем)? Правильный ответ 8, так как деление имеет приоритет над вычитанием. В приложении С представлен список приоритетов операторов в РНР (включая не упомянутые здесь).

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

$Number = ( 1 0 4 ) / 2;
$Number = 10 (4 / 2);

В первом примере переменная теперь равна 3, а во втором 8. Использова ние скобок гарантирует, что вы не получите странных результатов вычислений. Можно переписать сценарий, объединив многочисленные строки в одну, при этом поддерживая порядок вычислений с помощью скобок.

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

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 $Тах++; // Налог ($Тах) 1.06.
11 $TotalCost = (($Cost * $Quantity) $Discount) * $Tax;
12 $Payments = $TotalCost /12;
13 // Печать результатов.
14 print ("You requested to purchase $Quantity widget(s)at $$Cost
each. \rxP>") ;
15 . print ("The total with tax, minus your $$Discount, comes to $");
16 printf ("%01.2f", $TotalCost);
17 print (" \n<P>You may purchase the widget(s) in 12 monthly
installments of $");
18 printf ("%01.2f", $Payments);
19 print (" each.\n<P>");
20 ?>
21 </BODY>
22 </HTML>

Установление приоритета с помощью скобок

  1. Откройте файл numbers.php в текстовом редакторе.
  2. Измените строку 13 следующим образом (листинг 4.4):
  3. STotalCost = (($Cost * $Quantity) . $Discount) * $Tax;

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

  4. Удалите строки 10 и 12. Так как вычисление происходит на одной строке, эти две больше не нужны.
  5. Сохраните сценарий, загрузите его на сервер и протестируйте в браузере (рис.).
  6. Следите за правильностью использования скобок при создании формул (каждая открывающая скобка должна иметь закрывающую).