Поиск

Другие операторы

В большинстве своем операторы РНР и типы переменных, которые в них ис пользуются, описывались в предыдущих главах. Это арифметические операто ры сложения (+), вычитания (), умножения (*) и. деления (/), а также опера торы инкремента (+ + ) и декремента (—) для увеличения и уменьшения числового значения на единицу. Это также оператор присвоения (=), использу емый для задания значения переменной любого типа. Мы обсудили и оператор сцепления (.), используемый для соединения строк.

Все указанные операторы хороши для присвоения значения переменной, но от них мало пользы, когда дело касается условных выр

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

В главе 2 был представлен оператор присвоения (знак равенства). При этом оговаривалось, что значение оператора несколько необычно. Выражение SVariable = 5; означает не то, что переменная SVariable равна 5, а то, что ей присвоено значение 5,

При программировании условий часто необходимо знать, равна ли пере менная конкретному значению (например, при проверке имени пользователя или пароля), что нельзя сделать с помощью одного знака равенства (тем более что он уже занят оператором присвоения). Для этих целей используется опера тор равенства (==), состоящий из двух знаков равенства подряд.

SVariable = 5;
SVariable == 5;

При совместном использовании этих строк кода первая строка присваива ет переменной SVariable значение 5, а затем «говорит», что результат исти нен, когда «видит», что значение SVariable равно 5. Это доказывает, какую зна чительную разницу вносит дополнительный знак равенства в код РНР и почему необходимо проводить четкую границу между операторами присвоения и срав нения.

Оператор неравенства в РНР представлен комбинацией из восклицательно го знака и знака равенства (! =). Вообще восклицательный знак показывает от рицание значения, функцию логическое нет. SVariable означает, что перемен ная SVariable существует и имеет значение, отличное от нуля, а ! SVariable что переменная SVariable не существует, не имеет значения или ее значение равно нулю.

Остальные операторы сравнения аналогичны математическим эквивален там: меньше (<)', больше (>), меньше или равно (<=), больше или равно (>=). Расширим функциональность программы расчета стоимости товара, пере писав сценарий nunlbers.php так, чтобы скидка применялась только при закуп ке на сумму больше .

Использование операторов сравнения

  1. Откройте текущую версию numbers.php (листинг 6.2) в текстовом редак торе.
  2. Снизьте цену единицы товара, чтобы было не так просто дойти до иско мого рубежа в , строка 8.
  3. SCost = 2 0 . 0 0 ;
  4. После строки 13 измените выражение с STotalCost следующим образом:
  5. STotalCost = (SCost * SQuantity);,

    Так как скидка применима лишь для общей суммы покупки свыше , то сначала необходимо отдельно рассчитать эту общую сумму

  6. Создайте условие, проверяющее, превысила ли общая сумма .
  7. if (STotalCost >= 50) {
    STotalCost = STotalCost SDiscount;
    {

    Используя операторы сравнения внутри выражения условия, можно опре делить, что скидка будет предоставлена, только если значение $TotalCost боль ше или равно (не указывайте знак доллара в условии). Скидка вычитается, только если условие истинно.

  8. Добавьте к общей сумме налог.
  9. $TotalCost = $TotalCost * $Tax,
  10. Оставшаяся часть сценария осталась неизменной, включая определение ежемесячных взносов и печать всех результатов.
  11. Сохраните сценарий (листинг 6.3), загрузите его на сервер и протести руйте в браузере с помощью разных значений переменной $Quantity (рис.).
  12. Листинг 6.3 т Операторы сравнения, такие как «меньше или равно» (<=), позволяют лучше задавать числовые условия в коде.

    1 <HTML>
    2 <HEAD>
    3 ,, <TITLE>Conditionals</TITLE>
    4 </HEAD>
    5 <BODY>
    6 <?php
    7 /* Переменная $Quantity должна быть передана в эту страницу из формы.
    $Discount необязательна. */
    8 $Cost = 20,00;
    9 $Тах = 0.06;
    10 if ($Quantity) { '
    11 SQuantity = abs($Quantity);
    12 $Discount = abs($Discount);
    13 $Tax++; // $Tax составляет 1.06.
    14 $TotalCost = ($Cost * $Quantity);
    15 if ($TotalCost >= 50) {
    16 $TotalCost = $TotalCost $Disoount;
    17 }
    18 $TotalCost = $TotalCost * $Tax;
    19 $Payments = round ($TotalCost, 2) /12;
    20 // Печать результатов.
    21 print ("You requested to purchase $Quantity widget(s) at $$Cost
    each.\n<P>");
    22 print ("The total with tax, minus your $$Discount, comes to $");
    23 prlntf ("%01.2f", $TotalCost);
    24 print (".\n<P>You may purchase the widget(s) in 12 monthly
    installments of $");
    25 printf ("%01.2f", $Payments);
    26 print (" each.\n<P>");
    27 }
    28 ?>
    29 </BODY>
    30 </HTML>
    Если в выражениях с условным оператором if делается ошибка и вместо $Variable == 5 пишется $Variable = 5, то соответствующие условию ин струкции будут выполняться всегда. Это происходит потому, что оператор срав нения $Variable == 5 может быть истинным или ложным, а оператор присвое ния $Variable = 5 всегда выдает истину, если справа от знака равенства стоит ненулевое значение.