METANIT.COM

Php конструкция if elseif

Часто необходимо выполнить одно выражение, если определённое условие верно, и другое выражение, если условие не верно. Именно для этого else и используется. else расширяет оператор if , чтобы выполнить выражение, в случае, если условие в операторе if равно false . К примеру, следующий код выведет a больше чем b , если $a больше, чем $b , и a НЕ больше, чем b в противном случае:

Выражение else выполняется только, если выражение if вычисляется как false , и если нет других любых выражений elseif , или если они все равны false также (смотрите elseif).

Замечание: Болтающийся else

В случае вложенных операторов if — else , else всегда ассоциируется с ближайшим if .

Несмотря на отступ (который не имеет значения в PHP), else связан с if ($b) , поэтому этот пример ничего не выведет. Хотя такое поведение допустимо, рекомендуется его избегать, используя фигурные скобки для устранения потенциальных неоднозначностей.

User Contributed Notes 10 notes

An alternative and very useful syntax is the following one:

statement ? execute if true : execute if false

Ths is very usefull for dynamic outout inside strings, for example:

print(‘$a is ‘ . ($a > $b ? ‘bigger than’ : ($a == $b ? ‘equal to’ : ‘smaler than’ )) . ‘ $b’);

This will print «$a is smaler than $b» is $b is bigger than $a, «$a is bigger than $b» if $a si bigger and «$a is equal to $b» if they are same.

If you’re coming from another language that does not have the «elseif» construct (e.g. C++), it’s important to recognise that «else if» is a nested language construct and «elseif» is a linear language construct; they may be compared in performance to a recursive loop as opposed to an iterative loop.

$limit = 1000 ;
for( $idx = 0 ; $idx < $limit ; $idx ++)
< $list []= "if(false) echo \" $idx ;\n\"; else" ; >
$list []= » echo \» $idx \n\»;» ;
$space = implode ( » » , $list );| // if . else if . else
$nospace = implode ( «» , $list ); // if . elseif . else
$start = array_sum ( explode ( » » , microtime ()));
eval( $space );
$end = array_sum ( explode ( » » , microtime ()));
echo $end — $start . » seconds\n» ;
$start = array_sum ( explode ( » » , microtime ()));
eval( $nospace );
$end = array_sum ( explode ( » » , microtime ()));
echo $end — $start . » seconds\n» ;
?>

This test should show that «elseif» executes in roughly two-thirds the time of «else if». (Increasing $limit will also eventually cause a parser stack overflow error, but the level where this happens is ridiculous in real world terms. Nobody normally nests if() blocks to more than a thousand levels unless they’re trying to break things, which is a whole different problem.)

There is still a need for «else if», as you may have additional code to be executed unconditionally at some rung of the ladder; an «else if» construction allows this unconditional code to be elegantly inserted before or after the entire rest of the process. Consider the following elseif() ladder:

Источник

elseif/else if

Конструкция elseif, как ее имя и говорит есть сочетание if и else. Аналогично else, она расширяет оператор if для выполнения различных выражений в случае, когда условие начального оператора if эквивалентно FALSE . Однако, в отличии от else, выполнение альтернативного выражения произойдет только тогда, когда условие оператора elseif будет являться равным TRUE . К примеру, следующий код может выводить a больше, чем b , a равно b or a меньше, чем b :

if ( $a > $b ) echo «a больше, чем b» ;
> elseif ( $a == $b ) echo «a равен b» ;
> else echo «a меньше, чем b» ;
>
?>

Может быть несколько elseif в одном if выражении. Первое же выражение elseif (если будет хоть одно) равное TRUE будет выполнено. В PHP вы также можете написать ‘else if’ (в два слова), и тогда поведение будет идентичным ‘elseif’ (в одно слово). Синтаксически значение немного отличается (если Вы знакомы с языком С, это тоже самое поведение), но в конечном итоге оба выражения приведут к одному и тому же результату.

Выражение elseif выполнится, если предшествующее выражение if и предшествующие выражения elseif эквивалентны FALSE , а текущий elseif равен TRUE .

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

/* Некорректный способ: */
if( $a > $b ):
echo $a . » больше, чем » . $b ;
else if( $a == $b ): // Не скомпилируется.
echo «Строка выше вызывает фатальную ошибку.» ;
endif;

/* Корректный способ: */
if( $a > $b ):
echo $a . » больше, чем » . $b ;
elseif( $a == $b ): // Заметьте, тут одно слово.
echo $a . » равно » . $b ;
else:
echo $a . » не больше и не равно » . $b ;
endif;

Источник

Операторы if else PHP

В этой статье мы расскажем, как использовать операторы if else PHP.

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

В PHP есть несколько операторов, которые можно использовать для принятия решений:

  • Оператор if ;
  • Оператор if . else ;
  • Оператор if . elseif . else ;
  • Оператор switch . case .

Ниже мы рассмотрим каждый из этих операторов.

Оператор if в PHP

Оператор if в PHP ( как и PHP elseif ) используется для выполнения блока кода только в том случае, если указанное условие имеет значение true . Это простейший условный оператор PHP , его можно записать следующим образом:

Приведенный ниже код выводит « Хорошего уик-энда! », если сегодня пятница:

Оператор if . else PHP

Можно усложнить процесс принятия решений, предоставив альтернативный вариант. Для этого к if нужно добавить оператор else . Оператор if . else позволяет выполнить один блок кода, если указанное условие оценивается как true , а другой блок кода, если false .

Его можно записать следующим образом:

Приведенный ниже код выводит « Хорошего уик-энда! », если сегодня пятница. Иначе выводиться « Хорошего дня! ».

Оператор if . elseif . else

if. elseif. else оператор ( не путать с PHP elseif else ) используется для объединения нескольких операторов if . else .

if(условие) < // Код, который будет выполнен, если условие истинно >elseif(условие) < // Код, который будет выполнен, если условие истинно >else< // Код, который будет выполнен, если условие ложно >

Приведенный ниже код выводит « Хорошего уик-энда! », если сегодня пятница или «Хорошего воскресенья!» если сегодня воскресенье. В противном случае будет выводиться « Хорошего дня! ».

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

Тернарный оператор предоставляет сокращенный способ написания операторов if . else и elseif PHP . Тернарный оператор обозначается символом вопросительного знака ( ? ). Он принимает три операнда: условие для проверки, результат для true и результат для false .

Чтобы понять, как работает этот оператор, рассмотрим следующие примеры:

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

Тернарный оператор в приведенном выше примере выбирает значение слева от двоеточия ( т. е. «Ребенок» ), если условие оценивается как true ( т. е. если $age меньше 18 ) и значение справа от двоеточия ( т.е. «Взрослый» ), если условие оценивается как false .

Примечание . Код, написанный с использованием тернарного оператора, может быть трудно читаемым. Тем не менее, он предоставляет способ компактной записи операторов if-else и PHP elseif .

Оператор нулевого коалесцирования в PHP7

В PHP 7 был введен новый оператор нулевого коалесцирования ( ?? ), который можно использовать в качестве сокращенного обозначения тройного оператора в сочетании с функцией isset() .

Чтобы лучше понять, как это работает, рассмотрим приведенный ниже код. Он извлекает значение $_GET[‘имя’] . Если оно не существует или равно NULL , возвращается ‘ anonymous ‘.

Используя оператор нулевого коалесцирования вместо PHP elseif примера, этот же код можно записать в следующем виде:

Второй вариант синтаксиса является более компактным и простым в написании.

Вадим Дворников автор-переводчик статьи « PHP If…Else Statements »

Дайте знать, что вы думаете по данной теме материала в комментариях. Мы очень благодарим вас за ваши комментарии, отклики, подписки, лайки, дизлайки!

Источник

Php конструкция if elseif

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

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

Конструкция if (условие) проверяет истинность некоторого условия, и если оно окажется истинным, то выполняется блок выражений, стоящих после if. Если же условие ложно, то есть равно false, тогда блок if не выполняется. Например:

0) < echo "Переменная a больше нуля"; >echo "
конец выполнения программы"; ?>

Блок выражений ограничивается фигурными скобками. И так как в данном случае условие истинно (то есть равно true): значение переменной $a больше 0, то блок инструкций в фигурных скобках также будет выполняться. Если бы значение $a было бы меньше 0, то блок if не выполнялся.

Если блок if содержит всего одну инструкцию, то можно опустить фигурные скобки:

0) echo "Переменная a больше нуля"; echo "
конец выполнения программы"; ?>

Можно в одной строке поместить всю конструкцию:

if($a>0) echo "Переменная a больше нуля";

В данном случае к блоку if относится только инструкция echo «Переменная a больше нуля»;

else

Блок else содержит инструкции, которые выполняются, если условие после if ложно, то есть равно false:

 0) < echo "Переменная a больше нуля"; >else < echo "Переменная a меньше нуля"; >echo "
конец выполнения программы"; ?>

Если $a больше 0, то выполняется блок if, если нет, то выполняется блок else.

Поскольку здесь в обоих блоках по одной инструкции, также можно было не использовать фигурные скобки для определения блоков:

if($a > 0) echo "Переменная a больше нуля"; else echo "Переменная a меньше нуля";

elseif

Конструкция elseif вводит дополнительные условия в программу:

Можно добавить множество блоков 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:

       0) < ?>

Переменная a больше нуля

?>

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

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

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

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

       0) < ?>

Переменная a больше нуля

elseif($a < 0) < ?>

Переменная a меньше нуля

else < ?>

Переменная a равна нулю

?>

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

       0): ?> 

Переменная a больше нуля

Переменная a меньше нуля

Переменная a равна нулю

Тернарная операция

Тернарная операция состоит из трех операндов и имеет следующее определение: [первый операнд - условие] ? [второй операнд] : [третий операнд] . В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true , то возвращается второй операнд; если условие равно false , то третий. Например:

Если значение переменной $a меньше $b и условие истинно, то переменная $z будет равняться $a + $b . Иначе значение $z будет равняться $a - $b

Источник

Читайте также:  Php get all request header
Оцените статью