Конструкция if..else
Условные конструкции позволяют направлять работу программы в зависимости от условия по одному из возможных путей. И одной из таких конструкций в языке PHP является конструкция if..else
Конструкция if (условие)
проверяет истинность некоторого условия, и если оно окажется истинным, то выполняется блок выражений, стоящих после if
. Если же условие ложно, то есть равно false
, тогда блок if
не выполняется:
<?
$a = 4;
if($a>0) {
echo "Переменная a больше нуля";
}
echo "<br>конец выполнения программы";
Блок выражений ограничивается фигурными скобками. И так как в данном случае условие истинно (то есть равно true
): значение переменной $a
больше 0, то блок инструкций в фигурных скобках также будет выполняться. Если бы значение $a
было бы меньше 0, то блок if
не выполнялся.
Если блок if
содержит всего одну инструкцию, то можно опустить фигурные скобки:
<?
$a = 4;
if($a>0)
echo "Переменная a больше нуля";
echo "<br>конец выполнения программы";
Можно в одной строке поместить всю конструкцию:
if($a>0) echo "Переменная a больше нуля";
В данном случае к блоку if
относится только инструкция echo
"Переменная a больше нуля".
else
Блок else содержит инструкции, которые выполняются, если условие после if
ложно, то есть равно false
:
<?
$a = 4;
if($a > 0) {
echo "Переменная a больше нуля";
}
else {
echo "Переменная a меньше нуля";
}
echo "<br>конец выполнения программы";
Если $a
больше 0, то выполняется блок if
, если нет, то выполняется блок else
.
Поскольку здесь в обоих блоках по одной инструкции, также можно было не использовать фигурные скобки для определения блоков:
if($a > 0)
echo "Переменная a больше нуля";
else
echo "Переменная a меньше нуля";
elseif
Конструкция elseif
вводит дополнительные условия в программу:
$a = 5;
if($a>0) {
echo "Переменная a больше нуля";
}
elseif($a < 0){ echo "Переменная a меньше нуля" ; } else{ echo "Переменная a равна нулю" ; }
Можно добавить множество блоков elseif
. И если ни одно из условий в if
или elseif
не выполняется, тогда срабатывает блок else
.
Определение условия
Выше в качестве условия применялись операции сравнения. Однако в реальности в качестве условия может применяться любое выражение, а не только такое, которое возвращает true
или false
. Если передаваемое выражение равно 0, то оно интерпретируется как значение false
. Другие значения рассматриваются как true
:
if (0) {} // false
if (-0.0) {} // false
if (-1) {} // true
if ("") {} // false (пустая строка)
if ("a") {} // true (непустая строка)
if (null) {} // false (значие отсутствует)
Альтенативный синтаксис if
PHP также поддерживает альтернативный синтаксис для конструкции if..else
, при которой вместо открывающей фигурной скобки ставится двоеточие, а в конце всей конструкции ставится ключевое слово endif
:
$a = 5;
if($a > 0):
echo "Переменная a больше нуля";
elseif($a < 0):
echo "Переменная a меньше нуля";
else:
echo "Переменная a равна нулю";
endif
Комбинированный режим HTML и PHP
Также мы можем написать конструкцию if..else
иным образом, переключаясь внутри конструкции на код HTML:
<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?
$a = 5;
?>
<? if ($a > 0) { ?>
<h2>Переменная a больше нуля</h2>
<? } ?>
</body>
</html>
В данном случае само условие указывется в отдельном блоке php: <? if ($a > 0) { ?>
. Важно, что при этом этот блок содержит только открывающую фигурную скобку "{"
.
Завершается конструкция if
другим блоком php, который содержит закрывающую фигурную скобку: <? } ?>
Между этими двумя блоками php располагается код, который отображается на html-странице, если условие в if
истинно. Причем этот код представляет именно код html, поэтому здесь можно разместить различные элементы html, как в данном случае элемент <h2>
При необходимости можно добавить выражения else
и elseif
:
<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?
$a = -5;
?>
<? if ($a > 0) { ?>
<h2>Переменная a больше нуля</h2>
<? } elseif($a < 0) { ?>
<h2>Переменная a меньше нуля</h2>
<? } else { ?>
<h2>Переменная a равна нулю</h2>
<? } ?>
</body>
</html>
Также можно применять альтернативный синтаксис:
<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?
$a = 0;
?>
<? if ($a > 0): ?>
<h2>Переменная a больше нуля</h2>
<? elseif($a < 0): ?>
<h2>Переменная a меньше нуля</h2>
<? else: ?>
<h2>Переменная a равна нулю</h2>
<? endif; ?>
</body>
</html>