Содержание

Конструкция if..else и тернарная операция

Последнее обновление: 07.03.2021

Условные конструкции позволяют направлять работу программы в зависимости от условия по одному из возможных путей. И одной из таких конструкций в языке PHP является конструкция if..else

Конструкция 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

Блок 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

Конструкция 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>
<?php 
$a = 5;
?>

<?php if ($a > 0) { ?>
<h3>Переменная a больше нуля</h3>
<?php } ?>

</body>
</html>

В данном случае само условие указывется в отдельном блоке php: <?php if ($a > 0) { ?>. Важно, что при этом этот блок содержит только открывающую фигурную скобку «{«.

Завершается конструкция if другим блоком php, который содержит закрывающую фигурную скобку: <?php } ?>

Между этими двумя блоками php располагается код, который отображается на html-странице, если условие в if истинно. Причем этот код представляет именно код html, поэтому здесь можно разместить различные элементы html, как в данном случае элемент <h3>

При необходимости можно добавить выражения else и elseif:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.
COM</title> <meta charset="utf-8" /> </head> <body> <?php $a = -5; ?> <?php if ($a > 0) { ?> <h3>Переменная a больше нуля</h3> <?php } elseif($a < 0) { ?> <h3>Переменная a меньше нуля</h3> <?php } else { ?> <h3>Переменная a равна нулю</h3> <?php } ?> </body> </html>

Также можно применять альтернативный синтаксис:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php 
$a = 0;
?>

<?php if ($a > 0): ?>
<h3>Переменная a больше нуля</h3>
<?php elseif($a < 0): ?>
<h3>Переменная a меньше нуля</h3>
<?php else: ?>
<h3>Переменная a равна нулю</h3>
<?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

НазадСодержаниеВперед

Тернарный оператор и альтернативный синтаксис | PHPClub

alexblade
Новичок

16 Фев 2013