TOC

This article has been localized into Russian by the community.

Основы PHP:

Подробнее про if

В этом параграфе мы рассмотрим другие способы использовать if и связанные с ним операторы и структуры. Как только вы углубитесь в PHP, вы вскоре обнаружите, что это такой язык, в котором есть много альтернативных путей сделать что угодно.

В первую очередь, важно знать, как работать с if с несколькими условиями. Условные операторы if могут быть вложенными (nested) как показано ниже:

<?php
$number = 10;

if($number > 0)
    if($number < 20)
        echo "Number is bigger than 0 but smaller than 20!";
?>

Строка с echo выполнится, только если оба условия будут true. Однако, этот пример можно записать иначе:

<?php
$number = 10;

if(($number > 0) and ($number < 20))
    echo "Number is bigger than 0 but smaller than 20!";
?>

Какой вариант выбрать - зависит от ситуации и ваших личных предпочтений.

В предыдущем параграфе мы рассматривали ветку else. В PHP есть еще один рецепт на эту тему: elseif. Точно так, это if и else слившиеся воедино. Его можно использовать следующим образом:

<?php
$number = 10;

if($number > 20)
    echo "Number is bigger than 20!";
elseif($number > 10)
    echo "Number is bigger than 10!";
else
    echo "The number seems a bit low..."
?>

Это просто альтернативный синтаксис. Вы всегда можете просто написать else, за которым последует еще один if.

Помимо использования обычных блоков кода, окруженных фигурными скобками, PHP поддерживает альтернативный синтаксис для управляющих структур наподобие if, while и пр. Сейчас он не так часто используется, но все же, вот пример:

<?php
$number = 10;
if($number == 10):
    echo "Number is 10!";
else:
    echo "Number is not 10.. ";
    echo "But why?";
endif;
?>

Если такой синтаксис нравится вам больше, можете использовать его - разница невелика.

Тернарный оператор

Иногда возникают ситуации, в которых разворачивать всю структуру if-else кажется слишком длинно. Например, взгляните на следующий пример, где мы используем if чтобы добавить правильное слово к выходной переменной, основываясь на том, есть или нет какие-то товары в нашей корзине:

<?php
$numberOfItems = 2;
$output = "There is ";
if($numberOfItems > 0)
    $output .= "something";
else
    $output .= "nothing";
$output .= " in your basket";
echo $output;
?>

Используя тернарный оператор можно записать то же самое короче:

<?php
$numberOfItems = 0;
$output = "There is " . (($numberOfItems > 0) ? "something" : "nothing") . " in your basket";
echo $output;
?>

Это позволяет ощутимо сократить количество строк кода. Тернарный оператор ведет себя как сокращенная версия if-else, в одну строку. Условие внутри скобок - это if. Дальше ставится вопросительный знак, а за ним результат, который получится, если условие равно true. Затем идет двоеточие, за которым - результат, если условие false. Чтобы все это вставить внутрь присваивания, мы оборачиваем нашу конструкцию в круглые скобки, чтобы показать PHP, что это действительно единый оператор в строке. (Прим. перев.: "тернарный" значит "тройной", т.е. он содержит три части: условие ? ветка_true : ветка_false).

Использовать этот альтернативный синтаксис или нет - выбор, опять же, за вами. В некоторых случаях это кажется разумным, поскольку это просто, а в других - может быть лучше пойти более длинным путем, т.к. это сделает ваш код более читабельным.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!