Оператор IF в PHP | Условие IF ELSE, несколько условий, альтернативный синтаксис
Оператор IF
Оператор IF позволяет выполнить кусок кода только при выполнении каких-либо условий.
Например, мы можем уведомить пользователя, что дорогие товары доставляются бесплатно:
<?php
$price = 1000;
// Этот код выполнится только если $price > 500
if($price > 500)
echo 'Бесплатная доставка!<br>';
// А этот код выполнится в любом случае
echo 'Спасибо за заказ!';
?>
В примере выше IF выполняет следующую за ним команду, если выражение в круглых скобках принимает значение true.
Для выполнения нескольких команд нужно поместить их в фигурные скобки:
<?php
$price = 120;
// Этот код выполнится только при $price > 100
if($price > 100)
{
$price -= 10;
echo 'Ваша скидка 10р';
}
// А этот код выполнится в любом случае
echo 'Спасибо за заказ!';
?>
Конструкция IF ELSE
Условие может быть выполнено или не выполнено. Иногда возникает необходимость выполнить разный код для этих ситуаций. Для этого в PHP есть конструкция else:
<?php
// Для одной команды
if(100 > 50)
echo 'Условие верно.<br>';
else
echo 'Условие неверно.<br>';
// Для нескольких команд
if(200 > 100)
{
echo 'Условие ';
echo 'верно.';
}
else
{
echo 'Условие ';
echo 'неверно.';
}
?>
Существуют разные стандарты оформления PHP-кода. Если показанный выше кажется вам слишком громоздким, можете писать более компактно:
<?php if(200 > 100) { echo 'Условие '; echo 'верно.'; } else { echo 'Условие '; echo 'неверно.'; }
Несколько условий с ELSEIF
С помощью конструкции elseif мы можем добавлять неограниченное количество условий. Выполнено будет только первое из подходящих условий, остальные будут проигнорированы.
Разработаем систему, которая сама рассчитывает наценку на товар в зависимости от его цены:
<?php
$price = 150;
if($price < 50)
$price *= 1.3; // Умножаем цену на 30%
elseif($price < 100)
$price *= 1.2; // Умножаем цену на 20%
elseif($price < 200)
$price *= 1.1; // Умножаем цену на 10%
else
$price *= 1.05; // Умножаем цену на 5%
echo 'Стоимость товара: ', $price; // Стоимость товара: 165
?>
В примере выше выполнилось только третье условие. Первые два не соответствовали правилам, а последнее пропущено, поскольку уже выполнилось предыдущее.
Альтернативный синтаксис IF ELSE ENDIF
Нередко возникают ситуации, когда использование фигурных скобок делает код более запутанным. В этом случае удобно использовать альтернативный синтаксис:
<?php if($price > 100): ?>
<div></div>
<div></div>
<?php elseif($price < 50): ?>
<div></div>
<div></div>
<?php else: ?>
<div></div>
<div></div>
<?php endif; ?>
Используется такой синтаксис чаще всего в html-шаблонах, чтобы избавиться от фигурных скобок. Для сравнения, тот же кусок кода в обычном синтаксисе:
<?php if($price > 100) { ?>
<div></div>
<div></div>
<?php } elseif($price < 50) { ?>
<div></div>
<div></div>
<?php } else { ?>
<div></div>
<div></div>
<?php } ?>
Выглядит уже менее приятно, а при наличии других операторов с фигурными скобками будет совсем беда. Поэтому при формировании HTML-страниц не забывайте про альтернативный синтаксис.
PHP if-else. Условия в PHP.
В прошлый раз я писал о существующих типах операторов в PHP. Этот пост начинает серию связанных заметок об управляющих структурах (условия, циклы и т.д.) в PHP. В этой заметке речь пойдет об условном операторе IF..ELSE в PHP. Я познакомлю вас с синтаксисом конструкции if..else, а затем на конкретных примерах разберем различные способы использования if в PHP.
Условия в PHP
С условиями в PHP вы будете всречаться в каждом скрипте. Это, пожалуй самый распространенный вид управляющих структур. В PHP существует несколько типов условных конструкций. Сегодня мы поговорим о конструкции «
Те из вас, кто знаком с любым другим языком программирования должны знать логику работы этой конструкции.
Итак, как же выглядит синтаксис конструкции if…else в PHP:
<?php $a = 5; $b = 10; if ($a > $b) { echo "Переменная A больше, чем B"; } else { echo "Переменная B больше, чем A"; } ?>
По порядку:
- условие — здесь должно стоять какое-либо выражение, результат выполнения которого должен быть равен true или false. Например «$a < $b», вызов какой-то функции.
- если результат вычисления равен true (условие выполняется), то выполняется первая ветка (до ключевого слова
- если результат вычисления равен false (условние не выполняется), то выполняется вторая ветка (после ключевого слова else).
Ветки else, которая, как вы теперь знаете, выполняется в случае, если условие не верно, может и не быть. тогда конструкция if примет следующий вид:
<?php if (условие) { // если условие выполняется (true - истина) } ?>
Если условие выполнилось — то мы заходим внутрь, если не выполнилось — то пропускает, то что внутри if и идем дальше.
Пример использования if…else в PHP
<?php $a = 5; $b = 10; if ($a > $b) { echo "Переменная A больше, чем B"; } else { echo "Переменная B больше, чем A"; } ?>
Наберите этот пример и посмотрите, как он работает. В нашем случае на экран выведется строка echo «Переменная B больше, чем A», это происходит потому, что результат сравнения $a > $b равен false (ложь), т.к. 5 меньше, чем 10. Как видите все просто.
Попробуйте присвоить другие значения переменным $a и $b и посмотреть, как измениться результат. Также попробуйте переписать эту конструкцию без использования else.
Если, что-то не до конца понятно — пишите в комментах, разберемся 🙂 Удачи!
Условия if, else и switch в PHP
В этой статье будет разобран механизм условий if. В программировании условие if — это одни из основных инструментов. Давайте посмотрим, как это работает:<?php
if( /* условие */ ){
/* код в этих скобках будет выполняться,
если "условие" является правдой */
}else{
/* код в этих скобках будет выполняться,
если "условие" является ложью */
}
?>
Обратите внимание, что можно записать if( … ){ … } без блока else{ … }. Также можно записать оба блока без фигурных скобок, но тогда выполнится только следующая строчка после if или else. Приведём пример и попробуем написать код с возможными условиями:Во всех перечисленных примерах будет выведена строка «Это правда», потому что условие выполняется.<?php $a = 4; if( $a 3 ) echo 'Это правда'; // значение $a больше 3 if( $a >= 3 ) echo 'Это правда'; // значение $a больше или равно 3 if( $a == 4 ) echo 'Это правда'; // значение $a равно 4 if( $a == 2 * 2 ) echo 'Это правда';// значение $a равно 4 (потому что 2*2=4) if( $a != 7 ) echo 'Это правда';// значение $a НЕ равно 7 ?>
Не забывайте, что одиночное равно «=» делает операцию присваивания. А двойное «
<?php
$a = true; // тип данных boolean (имеет два значения true и false)
if( $a === true ) echo 'Это правда'; // значение $a имеет тип и равно true
if( $a !== false ) echo 'Это правда'; // значение $a не имеет тип или не равно false
?>
Условие может быть как в одну строку, так и в несколько. Ещё условие может содержать конец и начало PHP кода. Приведём пример:Если запустить такой код, то на экране появится HTML страница с блоком «Условие выполнено». Подобную запись, когда в условие if вставляют разрыв PHP кода, можно встретить довольно часто в больших проектах.<?php $a = 1; if( $a == 1 ){ ?> <div>Условие выполнено</div> <?php }else{ ?> <div>Условие не выполнено</div> <?php } ?>
Помимо if и else есть ещё elseif. Последнее используется для создания множественных условий. Приведём наглядный пример:
<?php
$a = 2;
if( $a == 1 ){
echo $a . ' == 1';
}elseif($a
В таком коде условия будут проверять по порядку. Сначала проверится $a == 1 и оно окажется ложью. Будет проверено следующее условие по списку Возможно сделать несколько проверок внутри скобок if( … ). Для этого используются логические операторы and (и) / or (или). Также возможно ставить скобки внутри условий. Эти скобки работают как скобки в математике. Разберём всё на примере:
<?php $a = 2; $b = 3; $c = 4; if( $a == 2 and $b
Конструкция switch
Если необходимо выполнить разный код при определённых значениях аргумента, то для большого количества проверок подойдёт switch( … ). Продемонстрируем работу этой функции наглядно:<?php
$a = 2;
switch ($a) {
case 1:
echo 'Переменная $a равна одному';
break;
case 2:
echo 'Переменная $a равна двум';
break;
case 'три':
echo 'Переменная $a равна трём';
break;
default:
echo 'Значение не найдено';
break;
}
?>
В результате выполнения этого кода на экране браузера появится надпись «Переменная $a равна двум«. Это происходит потому, что функция switch берёт значение переменной $a и начинает сравнивать со значениями, которые стоят после слова «case«. Эти значения могут быть как строки, так и числа. В примере $a = 2, поэтому функция выполнила код, стоящий в пункте «case 2:«.Конструкции switch в реальных проектах сайтов встречаются довольно редко. Обычно хватает if-else, или на крайний случай несколько раз вложенных if-else.
Условный оператор в PHP
Об условном операторе я уже писал, когда говорил о JavaScript. Разумеется, в PHP также этот оператор существует, и, разумеется, он является наиважнейшим оператором как и, пожалуй, в большинстве языков программирования. И об условном операторе в PHP я и поведаю в этой статье.
Синтаксис условного оператора в PHP такой:
if (условие) {
//Блок операторов
}
else {
//Блок операторов
}
Как видите, синтаксис точно такой же, как и в JavaScript. И вообще этот синтаксис переходит от языка к языку, и он очень удобен, прост и понятен. Однако, если PHP — это Ваш первый язык, то поясняю. Вначале идёт ключевое слово «if«, дальше в круглых скобках задаётся условие (результат которого, разумеется, либо true — истина, либо false — ложь). После условия идут фигурные скобки, в которых идёт блок операторов. И, наконец, необязательный блок else, который будет выполнен, если условие будет ложным (то есть вернёт false). Давайте разберём простейший пример на условный оператор:
<?php
$x = 4;
if ($x > 0)
echo "Число X положительное";
else
if ($x == 0)
echo "Число X равно нулю";
else
echo "Число X отрицательное";
?>
Давайте разберём эту простую задачу. Вначале скрипта объявляется переменная x и присваивается значение «4«. Затем идёт условие, где мы «если переменная x больше нуля» выводим сообщение, иначе (то есть если переменная x НЕ больше нуля) если переменная x равно 0, то выводим сообщение, что «Число X равно нулю«, иначе выводим, что число отрицательное. В общем, я постарался максимально подробно изложить алгоритм этой задачи. Надеюсь, Вы поняли принцип. Возможно, что некоторые из Вас спросят: «А куда делись фигурные скобки?» В данном случае они необязательны, потому что мы используем в каждом блоке всего один оператор (либо один оператор echo, либо один оператор IF). А вот если бы мы использовали два и более оператора, то нам пришлось бы уже ставить фигурные скобки.
И давайте ещё один пример рассмотрим, а, заодно, я познакомлю Вас с очень важной функцией в PHP — isset(), которая проверяет существование переменной и возвращает true, если переменная существует, либо false, если переменная не существует.
<?php
$v = "some";
if (isset($v))
echo "Переменная v существует и её значение - $v";
else
echo "Переменной v не существует.";
if (isset($abcdef)) {
echo "Такая переменная существует!";
echo "Странно... Ведь мы её не объявляли";
}
else
echo "Данной переменной не существует...";
?>
В этом примере мы вновь объявили переменную со строковым значением «some«. Дальше мы проверяем, если такая переменная существует (функция isset()), то сообщаем об этом, а если не существует (то есть функция isset() вернула false), то выводим другое сообщение. Дальше мы пишем ещё один условный оператор, в котором проверяем существование переменной abcdef. Также обратите внимание, что я поставил фигурные скобки, так как в блоке уже два оператора (два echo). Также обратите внимание, что если Вы используете двойные кавычки («), то такие строки «значение — $v» превращаются в «значение — some«, то есть подставляется значение переменной. А если Вы используете одинарные кавычки (‘), то значение переменной не подставляется.
Также бывают сложные условия: с логическим И (&&) и/или логическим ИЛИ (||):
<?php
$ab = 17;
$cd = 19;
$bool = true;
if (($ab - $cd < 0) && ($bool))
echo "Разница переменных меньше нуля и переменная bool = true";
?>
Разумеется, могут быть очень сложные условия с кучей логических И и логических ИЛИ. В общем, думаю, этот пример не нуждается в пояснении. Главное надо понять, что оператор с логическим И вернёт в итоге true только тогда, когда все условия истинны, а если используется логическое ИЛИ, то чтобы вернулось true, необходимо выполнение хотя бы одного из условий. Но и тут важно понимать, что бывают, например, такие условия:
if ((($a > 0) && ($b < 0)) || ($c == 0))
То есть здесь условие вернёт true, если (($a > 0) И ($b <0)) ИЛИ ($c == 0). В общем, надо научиться читать условия, и обращайте внимание на расстановку скобок, так как именно они задают приоритеты выполнения операций. Советую Вам с последним условием поработать. Напишите простой скрипт, присвойте трём переменным значения и посмотрите, что возвращает данное условие. Потом меняйте значениях переменных и следите за изменениями. Так Вы быстрее получите навык чтения сложных условий, а они, поверьте мне, используются очень часто не только в PHP, но и в других языках программирования.
- Создано 02.11.2010 12:33:13
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Условные конструкции в PHP
Условные конструкции
Последнее обновление: 1.11.2015
Условные конструкции позволяют направлять работу программы в зависимости от условия по одному из возможных путей.
Конструкция if..else
Конструкция if (условие)
проверяет истинность некоторого условия, и если оно окажется истинным, то выполняется блок выражений, стоящих после if. Если же
условие ложно, то есть равно false, тогда блок if не выполняется. Например:
<?php $a = 4; $b = 2; if($a>0) { $result= $a * $b; echo "результат равен: $result <br>"; } echo "конец выполнения программы"; ?>
Блок выражений ограничивается фигурными скобками. И так как в данном случае условие истинно (то есть равно true): значение переменной $a больше 0, то блок инструкций в фигурных скобках также будет выполняться. Если бы значение $a было бы меньше 0, то блок if не выполнялся.
Если блок if содержит всего одну инструкцию, то можно опустить фигурные скобки:
<?php $a = 4; $b = 2; if($a>0) echo $a * $b; echo "<br>конец выполнения программы"; ?>
Можно в одной строке поместить всю конструкцию:
if($a>0) echo $a * $b;
В данном случае к блоку if относится только инструкция echo $a * $b;
else
Блок else содержит инструкции, которые выполняются, если условие после if ложно, то есть равно false:
<?php $a = 4; $b = 2; if($a>0) { echo $a * $b; } else { echo $a / $b; } echo "<br>конец выполнения программы"; ?>
Если $a больше 0, то выполняется блок if, если нет, то выполняется блок else.
Поскольку здесь в обоих блоках по одной инструкции, также можно было не использовать фигурные скобки для определения блоков:
if($a>0) echo $a * $b; else echo $a / $b;
elseif
Конструкция elseif вводит дополнительные условия в программу:
$a = 5; $b = 2; if($a<0) { echo $a * $b; } elseif($a==0) { echo $a + $b; } elseif($a==5) { echo $a - $b; } else { echo $a / $b; }
Можно добавить множество блоков elseif
. И если ни одно из условий в if или elseif не выполняется, тогда срабатывает блок else.
Конструкция switch..case
Конструкция switch..case
является альтернативой использованию конструкции if..elseif..else
. Например:
$a = 1; if($a==1) echo "сложение"; elseif($a==2) echo "вычитание"; elseif($a==3) echo "умножение"; elseif($a==4) echo "деление";
Будет эквивалентно:
$a = 1; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; case 3: echo "умножение"; break; case 4: echo "деление"; break; }
После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.
В конце блока сase ставится оператор break, чтобы избежать выполнения других блоков.
Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default:
$a = 1; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; default: echo "действие по умолчанию"; break; }
Тернарная операция
Тернарная операция состоит из трех операндов и имеет следующее определение: [первый операнд - условие] ? [второй операнд] : [третий операнд]
.
В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true
, то возвращается второй операнд;
если условие равно false
, то третий. Например:
$a = 1; $b = 2; $z = $a < $b ? $a + $b : $a - $b; echo $z;
Если значение переменной $a меньше $b и условие истинно, то переменная $z будет равняться $a + $b
. Иначе значение $z будет равняться
$a - $b
Работа с конструкциями if-else, switch-case в PHP
Конструкция if-else
Для того, чтобы напрограммировать что-нибудь полезное, одних переменных далеко не достаточно. Нам нужен механизм, который позволит выполнять определенный код в зависимости от каких-либо условий.
То есть нам нужно иметь возможность спросить у PHP ‘Если’.
Например так: если эта переменная меньше нуля, то вывести ‘отрицательно’, иначе (то есть если она больше нуля) вывести ‘положительно’.
В PHP для таких вопросов предназначена конструкция if, которая позволяет выполнять определенный код при выполнении какого-либо условия:
<?php
if (логическое выражение) {
Этот код выполниться,
если логическое выражение верно (то есть равно true)
}
else
{
Этот код выполнится,
если логическое выражение неверно (то есть равно false)
}
?>
Обратите внимание на то, что блок else не обязателен.
Логическое выражение представляет собой тот самый вопрос, который мы хотим задать PHP. Например, чтобы спросить ‘переменная $a больше нуля’ мы напишем так: $a > 0.
Примеры работы:
<?php
$a = 3;
/*
Если переменная $a больше нуля, то выведи 'верно',
иначе (если меньше или равна нулю) выведи 'неверно'
*/
if ($a > 0) {echo 'Верно!';} else {echo 'Неверно!';} //выведет 'Верно!'
?>
<?php
$a = -3;
/*
Если переменная $a больше или равна нулю, то выведи 'верно',
иначе (если меньше нуля) выведи 'неверно'
*/
if ($a >= 0) {echo 'Верно!';} else {echo 'Неверно!';} //выведет 'Неверно!'
?>
Сокращенный синтаксис
В случае, если в фигурный скобках if или else будет только одно выражение, можно эти фигурные скобки не писать:
<?php
//Полный вариант:
if ($a == 0) {echo 'Верно!';} else {echo 'Неверно!';}
//Уберем скобки после if:
if ($a == 0) echo 'Верно!'; else {echo 'Неверно!';}
//Уберем скобки после else:
if ($a == 0) {echo 'Верно!';} else echo 'Неверно!';
/*
Уберем скобки и после if, и после else
(обратите внимание на точку с запятой - она осталась):
*/
if ($a == 0) echo 'Верно!'; else echo 'Неверно!';
?>
Равенство по значению и типу
Для того, чтобы сравнить на равенство следует использовать оператор двойное равно ==, а не одиночное =, как можно было подумать.
Почему так? Потому что одиночное равно зарезервировано за присваиванием. Смотрите пример:
<?php
$a = 0;
/*
Если переменная $a равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'
*/
if ($a == 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
?>
А следующий пример работать будет не так, как мы думаем:
<?php
$a = 0;
/*
Мы думаем оно работает так:
если переменная $a равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'.
На самом деле оно работает так:
переменной $a присвоить 1,
если удалось присвоить - то выведи 'верно',
иначе (если не удалось присвоить) выведи 'неверно'.
*/
if ($a = 1) echo 'Верно!'; else echo 'Неверно!'; //всегда будет выводить 'Верно!'
?>
Кроме оператора == существует еще и оператор ===. Их различие в том, что === сравнивает не только по значению, но и по типу, а == сравнивает только по значению.
Чтобы полностью разобраться в этом, внимательно изучите примеры:
<?php
$a = '0'; //переменная $a представляет собой строку, а не число 0
if ($a == 0) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Верно!', так как проверяется только значение, но не тип.
Поэтому '0' равен 0.
*/
?>
<?php
$a = '0'; //переменная $a представляет собой строку, а не число 0
if ($a === 0) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Неверно!', так как строка '0'
не равна числу 0 при сравнении по типу.
*/
?>
Не равно
Для того, чтобы спросить ‘не равно’, существует операторы != и !==. Первый игнорирует различие в типах, а второй — нет.
<?php
$a = 0;
/*
Если переменная $a НЕ равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'
*/
if ($a != 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!', так как $a равно 0
?>
<?php
$a = 1;
/*
Если переменная $a НЕ равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'
*/
if ($a != 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!', так как $a равно 0
?>
<?php
$a = '0';
/*
Если переменная $a НЕ равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'
*/
if ($a != 0) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Неверно!', так как $a равно '0',
а различие в типах игнорируется.
*/
?>
<?php
$a = '0';
/*
Если переменная $a НЕ равна нулю, то выведи 'верно',
иначе (если не равна нулю) выведи 'неверно'
*/
if ($a !== 0) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Верно!', так как $a равно '0',
а это не равно 0 при сравнении по типу.
*/
?>
Все операции сравнения
Возможные операции сравнения, которые можно использовать внутри if:
$a == $b | $a равно $b |
$a === $b | $a равно $b и они одинаковы по типу |
$a != $b | $a не равно $b |
$a !== $b | $a не равно $b или $a равно $b, но ни разные по типу |
$a | $a меньше $b |
$a > $b | $a больше $b |
$a | $a меньше или равно $b |
$a >= $b | $a больше или равно $b |
Функция empty
Зачастую в веб-программировании возникает следующая проблема: необходимо проверить переменную на пустоту.
Переменная будет пустая, если она равна нулю, » (пустой строке), false или null (то есть не определена ранее).
Проверка на пустоту выполняется с помощью функции empty():
<?php
$a = null;
//Если $a пустое, то...
if (empty($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
?>
<?php
$a = 0;
//Если $a пустое, то...
if (empty($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
?>
<?php
$a = '';
//Если $a пустое, то...
if (empty($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
?>
<?php
$a = 'hi';
//Если $a пустое, то...
if (empty($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!', так как $a не пустая
?>
Чаще возникает обратная задача — проверка на то, что переменная является НЕ пустой. Отрицание НЕ можно сделать с помощью оператора ‘!’:
<?php
$a = null;
//Если $a Непустое, то...
if (!empty($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!', так как $a пустое
?>
Функция isset
Аналогом empty является функция isset. Она проверяет существует ли переменная (то есть то, что она не равна null). Смотрите примеры:
<?php
$a = 'hello';
//Если $a существует, то...
if (isset($a)) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Верно!', так как $a существует.
*/
?>
<?php
$a = 0;
//Если $a существует, то...
if (isset($a)) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Верно!', так как $a существует.
*/
?>
<?php
/*
Пусть переменную $a вообще не определяли выше в коде
(это все равно, что присвоить ей null).
Если $a существует, то...
*/
if (isset($a)) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!'
?>
Аналогично проверятся на НЕ существование (через !isset):
<?php
$a = 3;
//Если $a НЕ существует то...
if (!isset($a)) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Неверно!', так как $a существует.
*/
?>
Несколько условий сразу: or и and
Иногда может быть нужно составить какое-то сложное условие, например, пользователь вводит месяц своего рождения и вам нужно проверить, что введенное число больше или равно 1 и меньше либо равно 12 (так как в году 12 месяцев).
Для этого существуют операторы and (логическое И) и or (логическое ИЛИ).
<?php
$a = 3;
$b = -3;
//Если $a больше нуля и $b одновременно меньше нуля то...
if ($a > 0 and $b < 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
$a = 3;
//Если $a больше или равно 1 и меньше или равно 12 то...
if ($a >= 1 and $a <= 12) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!'
$a = -3;
$b = -3;
/*
Если $a больше нуля ИЛИ $b меньше нуля - хотя бы один из них, то...
выведет 'Верно!', так как хотя $a и не больше нуля,
но одно из условий - $b < 0 - выполнится!
*/
if ($a > 0 or $b < 0) echo 'Верно!'; else echo 'Неверно!';
?>
Вместо and можно писать &&, а вместо or — ||.
Работа с логическими переменными
Многие функции PHP в результате своей работы возвращают либо true (истина), либо false (ложь). Эти значения довольно удобны при своей работе, но новичкам бывает довольно сложно понять их.
Представим себе, что переменная $a равна true. В таком случае конструкцию if можно записать так:
<?php
$a = true;
//Если $a равно true, то...
if ($a == true) echo 'Верно!'; else echo 'Неверно!';
/*
Выведет 'Верно!', так как $a равно true.
*/
?>
Так как такие сравнения довольно распространены в PHP, то существует специальный прием, облегчающий работу (но не понимание, к сожалению).
Прием такой: конструкцию $a == true можно заменить на более простую: вместо if ($a == true) написать if ($a) и она будет работать аналогично.
Следует пользоваться второй конструкцией, так как она проще.
<?php
/*
Заменим $a == true на более простую:
вместо if ($a == true) напишем if ($a):
*/
$a = true;
//Если $a равно true, то...
if ($a) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!', так как $a равно true
$a = true;
//Если $a НЕ true (то есть false!), то...
if (!$a) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!', так как $a равно true
?>
Также обратите внимание на следующие примеры:
<?php
//Данное выражение всегда будет выводить 'Верно'
if (true) echo 'Верно!'; else echo 'Неверно!';
//Данное выражение всегда будет выводить 'Неверно'
if (false) echo 'Верно!'; else echo 'Неверно!';
//Данное выражение всегда будет выводить 'Неверно'
if (!true) echo 'Верно!'; else echo 'Неверно!';
//Данное выражение всегда будет выводить 'Верно'
if (!false) echo 'Верно!'; else echo 'Неверно!';
?>
Работа вместе с HTML
PHP устроен таким образом, что его можно использовать в одном файле с HTML. Представьте, что у нас возникает такая задача: если пользователь авторизован — вывести его логин, иначе ссылку на авторизацию. Ее можно решить, смешивая PHP код и HTML код вместе.
Посмотрите примеры:
<?php
$a = true;
if ($a) {
//Данный HTML код будет виден на экране только если $a равно true
echo '<p>Здесь выведем какой-то HTML!</p>';
}
?>
Однако, очень часто это может оказаться неудобным, особенно если размеры HTML кода очень большие. Поэтому можно воспользоваться следующим приемом с разрывом PHP:
<?php
//Пример на работу вместе с HTML
$a = true;
if ($a) {
/*
Мы оборвали PHP, но HTML код ниже
все равно будет виден на экране только если $a равно true.
*/
?>
<p>Здесь выведем какой-то HTML!</p>
<?php
/*
Здесь мы продожаем PHP, открыв скобку <?php
и закрываем фигурную скобку от ифа.
*/
}
?>
Вложенные if
Предположим, нам необходимо спросить у PHP такую вещь: если переменная $a пуста, то вывести ‘Введите $a’, если не пуста, то проверить — больше нуля $a или нет. Если больше нуля — то вывести ‘Больше нуля!’, если меньше — вывести ‘Меньше нуля’.
Одной конструкцией if здесь не обойтись, нужно использовать две таким образом, чтобы одна была внутри другой:
<?php
if (empty($a)) { //если переменная $a пуста
echo 'Введите $a!';
} else { //если переменная $a НЕ пуста
if ($a > 0) { //спрашиваем, больше ли нуля переменная $a
echo 'Больше нуля!';
} else {
echo 'Меньше нуля!';
}
}
?>
Конструкция elseif
Недостатком конструкции предыдущего примера является большое количество фигурных скобок. Поэтому была изобретена специальная конструкция elseif (пишется слитно!), которая представляет собой одновременно и else, и начало вложенного if:
<?php
//Решение предыдущей задачи через конструкцию elseif
if (empty($a)) {
echo 'Введите $a!';
} elseif ($a > 0) { //одновременно выполняется else для empty($a) и спрашивается больше ли $a нуля
echo 'Больше нуля!';
} else {
echo 'Меньше нуля!';
}
?>
Можно использовать несколько elseif, но злоупотреблять этим не стоит (лучше будет воспользоваться конструкцией switch-case, о которой ниже).
Несколько if
Пусть у нас есть такая задача: сайт поддерживает 3 языка — русский, английский, немецкий. Переменная $lang может принимать 3 значения — ‘ru’, ‘en’ и ‘de’. В зависимости от значения переменной $lang следует вывести фразу на одном из языков.
Решение: можно было бы воспользоваться вложенными ифами или elseif. Выглядело бы это примерно так:
<?php
//Решение задачи через elseif – не самое удачное
if ($a == 'ru') { //фраза на русском
echo 'Русский текст';
} elseif ($a == 'en') { //фраза на английском
echo 'Английский текст';
} elseif ($a == 'de') { //фраза на немецком
echo 'Немецкий текст';
}
?>
Такое решение не слишком красивое — блок else здесь не нужен! Проще всего будет написать не один длинный if с несколькими else, а несколько if вообще без else:
<?php
//Решение задачи через несколько if – оно намного лучше
if ($a == 'ru') { //фраза на русском
echo 'Русский текст';
}
if ($a == 'en') { //фраза на английском
echo 'Английский текст';
}
if ($a == 'de') { //фраза на немецком
echo 'Немецкий текст';
}
/*
В данном коде сработает только один из ифов,
так как $a может иметь только одно из значений
*/
?>
Однако, это решение тоже не слишком удобно. Представьте, что у вас будет не три языка, а 10 — вам придется написать 10 конструкций if.
Для таких случаев существует конструкция switch-case.
Конструкция switch-case
Конструкция switch-case представляет собой альтернативу if-else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).
Изучите ее синтаксис:
<?php
switch ($переменная) {
case 'значение1':
здесь код, который выполнится в случае, если переменная имеет значение1;
break;
case 'значение2':
здесь код, который выполнится в случае, если переменная имеет значение2;
break;
case 'значение3':
здесь код, который выполнится в случае, если переменная имеет значение3;
break;
default:
этот код выполнится в случае, если переменная не совпала ни с одним значением;
break;
}
?>
Решим нашу задачу с тремя языками с помощью данной конструкции:
<?php
switch ($lang) {
case 'ru':
echo 'Русский текст';
break;
case 'en':
echo 'Английский текст';
break;
case 'de':
echo 'Немецкий текст';
break;
default:
echo 'Данный язык не поддерживается';
break;
}
?>
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку.
Когда все решите — переходите к изучению новой темы.
elseif/else if | Руководство по PHP
(PHP 4, PHP 5, PHP 7)
Конструкция elseif, как ее имя и говорит есть сочетание if и else. Аналогично else, она расширяет оператор if для выполнения различных выражений в случае, когда условие начального оператора if эквивалентно FALSE
. Однако, в отличии от else, выполнение альтернативного
выражения произойдет только тогда, когда условие оператора elseif будет являться равным TRUE
. К примеру,
следующий код может выводить a больше, чем
b, a равно b
or a меньше, чем b:
<?php
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.
<?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 с оператором или в PHP
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
- Авторизоваться зарегистрироваться
текущее сообщество
- Переполнение стека Помогите чат
Как использовать функции php в операторе IF
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
ИЛИ в операторе IF PHP
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
массивов — PHP if in_array (), как получить и ключ?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании