Поиск
Совместное использование различных операторов
При обсуждении различного рода математических операторов неизбежно воз никает вопрос приоритета порядка выполнения действий при вычислениях. Например, какое значение будет иметь следующая переменная:
$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>
Установление приоритета с помощью скобок
- Откройте файл numbers.php в текстовом редакторе.
- Измените строку 13 следующим образом (листинг 4.4):
- Удалите строки 10 и 12. Так как вычисление происходит на одной строке, эти две больше не нужны.
- Сохраните сценарий, загрузите его на сервер и протестируйте в браузере (рис.).
STotalCost = (($Cost * $Quantity) . $Discount) * $Tax;
Вполне можно выполнить все вычисления разом, если вы используете скоб ки для установки приоритетов. Другой вариант выучить правила приорите тов в РНР, но намного легче использовать скобки.