Поиск

Логические операторы

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

$Variable =5; .

if ($Variable) { ...

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

$Variable =5; .
if ($Variable) { ...

Условие также истинно, если логически верно:

if (5>=3) { ...

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

if (5<=3) { ...

Для построения из операторов логических выражений в РНР используют специальные логические операторы: два варианта И (AND и &&); два варианта Или (OR и I I две вертикальных черты); два варианта Нет (NOT и ! восклица тельный знак); а также Или Нет (XOR). Если имеется два варианта одного опе ратора (AND, OR и NOT), то они отличаются друг от друга только приоритетом (см. соответствующую таблицу в приложении С).

С помощью скобок и логических операторов можно создавать сколь угодно сложные условные выражения для оператора i f . Для истинности выражения AND обе части условия должны быть верны. При использовании оператора OR хотя бы одна часть должна быть истинна, и тогда все условие верно. Следу ющие выражения истинны:

if ( ( 5 <= 3) OR (5 >=3 )) { ...
if ( (5 > 3) AND (5 < 10) ) { ...

Условия, приведенные ниже, ложны:

if ( (5 != 5) AND (5 > 3 ) ) { . . .
if ( ( 5 != 5) OR (5 < 3» { ...

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

Чтобы показать работу логических операторов, добавим еще одно условие к сценарию numbers.php. Оно позволяет пользователю узнать, положена ли ему скидка.

Использование логических операторов

  1. Откройте файл numbers.php в текстовом редакторе (листинг 6.3).
  2. После того как впервые рассчитано значение $TotalCost (листинг 6.3, строка 14), но перед условием if ($TotalCost >= 50), наберите следующие строки:
  3. if ( ($TotalCost < 50) AND ($Discount) ) {
    print ("Your $$Discoupt will not apply because the total value of
    —the sale is under !\n<P>");

    Этим условием будут проверяться два момента: вопервых, превышает ли переменная $TotalCost сумму , вовторых, существует ли ненулевое значение скидки. Если оба значения истинны, сообщение будет распечатано. Если хоть одно из этих значений ложно, то все условие воспринимается как ложное (ведь оно регулируется оператором AND) и сообщение не распечатывается.

  4. Поскольку это было единственное изменение в сценарии, теперь страни цу можно сохранить (листинг 6.4), загрузить на сервер и протестировать в браузере (рис.).

Листинг 6.4 т В этом сценарии логический оператор AND задает конкретное условие, при выполнении которого будет распечатано сообщение. При исполь зовании оператора AND, обе части условия должны быть истинны, чтобы все условие стало таким же.


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 $Quantity = abs($Quantity);
12 $Discount = abs($Discount);
13 $Tax++; // $Tax составляет 1.06.
14 $TotalCost"= ($Cost * $Quantity);
15 if ( ($TotalCoet < 50) AND ($Discount) ) {
16 print ("Your $$Discount will not apply because the total value
of the sale is under !\n<P>");
17 }
18 if ($TotalCost >= 50) {
19 $TotalCost = $TotalCost $Discount;
20 }
21 $TotalCost .= $TotalCost * $Tax;
22 $Payments = round ($TotalCost, 2) / 12;
23 // Печать результатов.
.24 print ("You requested to purchase $Quantity widget(s) at $$Cost
each.\n<P>"};
25 print ("The total with tax, minus your $$Discount, comes to $");
26 printf ("%01.2f", $TotalCost);
27 print (".\n<P>You may purchase the widget(s) in 12 monthly
installments of $");
28 printf ("%01.2f", $Payments);
29 print (" each.\n<P>"); • •
30 }
31 ?> •
32 </BODY>
33 </HTML>
Еще одно общепринятое соглашение в программировании английские слова TRUE (истинный) и FALSE (ложный) в программах писать заглавными буквами.
При написании длинных, сложных условных конструкций вы можете забыть поста вить открывающую или закрывающую скобку, что приведет к ошибке или непред сказуемым результатам. Используйте какуюлибо систему (например, пишите условные конструкции с отступом, как в наших сценариях), позволяющую созда вать аккуратный и понятный код.