PHP/Условные операторы

Материал из Викиверситета
< PHP

Любой PHP-код представляет собой совокупность определенных конструкций: операторов, циклов и функций.

Логическое выражение[править]

Логическое выражение — конструкция языка программирования, результатом вычисления которой является «истина»(true) или «ложь»(false). Над логическими выражениями допускаются операции дизъюнкции(or/||), конъюнкции(and/&&) и отрицания(!).

Дизъюнкция

Дизъюнкция

Операция дизъюнкция дает значение true, когда хотя бы одно из логических условий имеет значение true, в противном случае значение операции равно false.

Пример использования:

<?php
$a = 10;
$b = 6;
var_dump(($a > 9) || ($b > 9));
?>

После выполнения скрипта на экран выведется строка bool(true), поскольку значение первого логического условия принимает значение true. В данном случае значение второго логического условия не имеет значения.

Конъюнкция

Конъюнкция

Операция конъюнкция дает значение true, когда все логические условия имеют значение true, если хотя бы одно из логических условий принимает значение false, то значение операции равно false.

Пример использования:

<?php
$a = 10;
$b = 6;
var_dump(($a > 9) && ($b > 9));
?>

После выполнения скрипта на экран выведется строка bool(false), поскольку логическое условие ($b > 9) принимает значение false.

Отрицание

Отрицание

Отрицание дает значение true, когда логическое условие имеет значение false, и наоборот: если логическое условие принимает значение false, то операция отрицания примет значение true.

Пример использования:

<?php
$a = 10;
$b = 6;
var_dump(($a > 9) && !($b > 9));
?>

Значение первого логического условия ($a > 9) принимает значение true, значение ($b > 9) принимает значение false, а его отрицание !($b > 9) - true. Таким образом, после выполнения скрипта на экран выведется строка: bool(true)

Условные операторы[править]

Условные операторы позволяют в зависимости от ситуации выполнять тот или иной сценарий. Обычно выделяют три конструкции: if, if...else, if...elseif...else, рассмотрим их далее.

Конструкция if[править]

Данная конструкция имеет вид

<?php
if (логическое выражение)
{
    оператор1;
    оператор2;
}
?>

Таким образом, если логическое выражение принимает значение true, то выполняются следующий блок, содержащий оператор1 и оператор2. В противном случае, если логическое выражение принимает значение false, ничего не происходит.

Заметим, что если логическое выражение определяет выполнение(невыполнение) только одного оператора, то допустима следующая запись

<?php
if (логическое выражение)
    оператор;
?>

Пример:

<?php
$a = 10; // Инициализируем переменную $a 
if ($a > 2) // Если значение $a больше 2 
    echo "\$a > 2 \n"; // Выведем на экран строку "$a > 2"
echo $a; // Выведем на экран значение переменной $a
?>

В данном случае на экране отобразятся две строки:

$a > 2

10

Конструкция if...else[править]

Данная конструкция имеет вид

<?php
if (логическое выражение)
{
    оператор1;
    оператор2;
}
else
{
    оператор3;
    оператор4;
}
?>

Синтаксис if...else такой же, как и для оператора if, за исключением того, что оператор else может использоваться для указания альтернативного действия. Таким образом, если логическое выражение принимает значение true, то выполняются следующий блок, содержащий оператор1 и оператор2. В противном случае, если логическое выражение принимает значение false, то выполняются блок, содержащий оператор3 и оператор4.

Заметим, что если логическое выражение определяет выполнение(невыполнение) только одного оператора, то допустима следующая запись без использования фигурных скобок.

<?php
if (логическое выражение)
    оператор1;
else
    оператор2;
?>

Пример:

<?php
$a = 10;
$b = 0;
if ($a > $b)
     echo "\$a больше, чем \$b";
else
     echo "\$a НЕ больше, чем \$b";
?>

В данном случае переменная $a больше переменной $b логическое условие ($a > $b) принимает значение true, поэтому на экране отобразится строка:

$a больше, чем $b

Рассмотрим другой пример:

<?php
$a = 10;
$b = $a;
if ($a > $b)
     echo "\$a больше, чем \$b";
else
     echo "\$a НЕ больше, чем \$b";
?>

В данном случае переменная $a равна переменной $b логическое условие ($a > $b) принимает значение false, поэтому на экране отобразится строка:

$a НЕ больше, чем $b

Заметим, что в данных примерах после if и else не стояли фигурные скобки, это допускается, поскольку в каждом случае необходимо выполнить только один оператор. При этом условии прописать фигурные скобки можно, хоть это и необязательно. Тот же самый код с фигурными скобками не вызовет ошибки и выведет на экран то же сообщение: $a НЕ больше, чем $b.

<?php
$a = 10;
$b = $a;
if ($a > $b)
{
     echo "\$a больше, чем \$b";
}
else
{
     echo "\$a НЕ больше, чем \$b";
}
?>

Конструкция if...elseif...else[править]

Данная конструкция имеет вид

<?php
if (логическое выражение 1) 
{
    оператор1;
    оператор2;
} 
elseif (логическое выражение 2) 
{
    оператор3;
    оператор4;
} 
else 
{
    оператор5;
    оператор6;
}
?>

Если вам нужно проверить несколько условий подряд, то для этой цели подойдет оператор if...elseif...else. Таким образом, если логическое выражение 1 принимает значение true, то выполняется следующий блок, содержащий оператор1 и оператор2. Если логическое выражение 1 принимает значение false, то проверяется логическое выражение 2. Если логическое выражение 2 принимает значение true, то выполняется сценарий, содержащий оператор3 и оператор4. В противном случае, если логическое выражение 2 принимает значение false, выполняются оператор5 и оператор6.

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

<?php
if (логическое выражение 1) 
    оператор1;
elseif (логическое выражение 2)
    оператор2;
else 
    оператор3;
?>

Пример:

<?php
$a = 10;
$b = $a;
if ($a > $b)
     echo "\$a больше, чем \$b";
elseif ($a < $b)
     echo "\$a меньше, чем \$b";
else 
     echo "\$a равна \$b";
?>

В данном случае логическое условие ($a > $b) принимает значение false, поэтому проверяется следующее логическое условие: ($a < $b), которое также принимает значение false. Таким образом выполняется сценарий, связанный с else и на экран выводится строка: $a равна $b

Упражнения[править]

1 Что будет отображено на экране после выполнения следующего скрипта?

<?php
$a = 10;
$b = $a;
if (($a > $b) || ($a > $b))
     echo "\$a = $a и \$b = $b";
else 
     echo $a;
?>

Ошибка
10
$a = $a и $b = $b
$a = 10 и $b = 10

2 Что будет отображено на экране после выполнения следующего скрипта?

<?php
$a = 10;
$b = 20;
$c = 30;
if (($a == $b) && ($a == $c) && ($b == $c))
     echo $a;
elseif (!($a == $b) && !($a == $c) && !($b == $c))
     echo $b;
else 
     echo $c;
?>

Ошибка
10
20
30

3 Что будет отображено на экране после выполнения следующего скрипта?

<?php
$a = 10;
$b = 20;
$c = 30;
elseif (!($a == $b) && !($a == $c) && !($b == $c))
     echo $b;
else 
     echo $c;
?>

Ошибка
10
20
30


Ссылки[править]