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