Всем привет. И сегодня я хочу рассказать вам про условия if и else. Я просто уверен что практически каждый кто сейчас это читает прекрасно знает о чём идёт речь. Ну а для всех остальных я поясню по лучше.
И так if - переводится с английского языка как "Если", в то время как else - иначе. Давайте я сразу покажу вам пример и я думаю очень многим всё сразу станет ясно.
$a = 1;
if ($a == 1) {
echo "a = 1";
} else {
echo "a не равно 1";
} ?>
Думаю многие уже догадались, что результатом данного примера будет появление на экране "a = 1". А всё потому что переменной a в самом начале мы присваиваем значение 1. Т.е. В случае если в скобках после if у нас верное значение, то выполняется скрипт расположенный в первых фигурных скобках {}. Иначе (else) Выполняем из других скобок, вот другой пример.
$a = 2;
if ($a == 1) {
echo "a = 1";
} else {
echo "a не равно 1";
} ?>
В данном примере будет выведено, что a не равняется одному. Но на самом дело это хоть и основные, но простые конструкции. В php так же есть и более компактный вариант записи условий.
Результат данного примера будет совершенно такой же как и в примерах выше. Так же не стоит забывать ещё одну контрукцию
if ($a == 1):?>
Наша a снова имеет значение 1
А теперь более сложная конструкция
Я даже начну сразу с примеров.
if ($a >= 0) {
if ($a == 0) {
?>
Наша А равна нулю
} else { ?>
Наша А больше нуля
}
} else {
echo "Наша переменная меньше нуля=(";
}
?>
Как видите в условия также можно вкладывать и другие условия, вы можете их создавать сколько угодно.
И вот вам ещё один пример.
if ($a == 0){
echo "Переменная равна нулю";
} elseif ($a > 0 && $a <5) {
?>
А больше нуля, но обязательно меньше 5
}elseif($a >= 5 || $a == -5){
echo "Этот тест вы увидите только если А будет больше или равно 5. ИЛИ!! Если А будет равно -5";
}else{?>
А это вы увидите если а будет меньше нуля, и при этом НЕ равно -5.
}?>
На самом деле в последнем примере в последнем else - нет такого условия что $a не должна равняться -5. Просто если а будет -5, то выполнится условие которое было выше и до нижнего не успеет дойти.
А так же если вы всё ещё не поняли, то условия которые прописываются в круглых скобках, используют специальные операторы, о них идёт речь в другой статье. Но к счастью их не так много и я могу повторить прямо здесь.
Логические операторы которые используются в условиях
Равенство, не путать с присвоением (=), на пример $a = 1; - В этом случае в ячейку "a" мы положили единицу, и запись вида $a == 1, то же самое что и 1 == 1.
Не равенство. if(1 != 2){echo "Это условие обязательно сработает потому что 1 не равно 2"; }
|| - ИЛИ. Кстати, если кто эти 2 символа проставляются если в англ раскладке нажать на шифт + косой шлеш (под бакспейсом).
0 || $a < 0){echo "Это условие сработает если А будет равняться например -15 ИЛИ например 23 "; }?>
Кстати данный пример можно написать и вот таким вот образом
= $a != 0 ? "А не равно нулю" : ""?>
&& - И. При таком логическом операторе скрипт будет выполнен только если оба условия были выполнены.
0){ echo "Для этого А не должны быть нулём И обязательно должно быть больше нуля"; }?>
Вот тот же пример
= $a > 0 ? "А больше нуля" : ""?>
Только что я рассказал как использовать логические операторы, но есть ещё одно! О чем на самом деле забывают некоторые программисты.
$a = 1;
if($a){
echo "Будет выполнено потому что у нас существует $a и она не пустая. Но если в условие написать $b, то уже выполнится else, потому что $b у нас нет=(";
}else{
echo "У нас всегда будет выполняться первое условие, потому что у нас всегда есть А";
}?>
Суть в том, что при проверке условий возвращается true или false. Если смотреть на верхний пример. В условии if у нас ни как НЕ может быть пустоты. Любая пустота или при не прохождении логического оператора возвращается false, в противном случае вернётся true.
if($a = 1){
echo "Всегда будет верно! потому что присвоение переменной "a" значение, происходит прямо в условии, т.е. у нас присвоется единица, и только потом проверится, если что-то в переменно $a. И разумеется если сейчас вывести $a, то мы увидим ".$a;
}else{
echo "Мы никогда не дойдём до сюда=(";
}?>
На этом пожалуй я и закончу. Всем удачи, помните самое главное, это был php и по этому данный участок кода у вас должен располагаться в ?>. Разумеется читайте мой блог, в котором я вам расскажу как же всё таки писать отличные сайты и веб-приложения. И даже как их не только писать, а как делать это правильно!
Двумя основными операторами, обеспечивающими создание структур ветвления на основе условий, являются if и switch. Наиболее широко применяется оператор if, который используется в структурах перехода по условию. С другой стороны, в определенных ситуациях, особенно если приходится обеспечивать переход по одной из многочисленных ветвей в зависимости от значения единственного выражения, а применение целого ряда операторов if приводит к усложнению кода, более удобным становится оператор switch.
Прежде чем изучить эти операторы нужно разобраться в логических выражениях и операциях.
Логические операции
Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.
Логические операции PHP
Операция
|
Описание
|
---|
and
|
Операция, результат которой принимает истинное значение тогда и только тогда, когда оба ее операнда имеют истинное значение
|
or
|
Операция, результат которой принимает истинное значение, если один из ее операндов (или оба операнда) имеет истинное значение
|
!
|
Операция, результат которой принимает истинное значение, если ее единственный операнд (задаваемый справа от знака операции) имеет ложное значение, и ложное значение, если операнд имеет истинное значение
|
xor
|
Операция, результат которой принимает истинное значение, если любой из ее операндов (но не оба одновременно) имеет истинное значение
|
&&
|
То же, что и операция and, но связывает свои операнды сильнее по сравнению с этой операцией
|
||
|
То же, что и операция or, но связывает свои операнды сильнее по сравнению с этой операцией
|
Операции && и || должны быть знакомы программистам, работающим с языком C. Операцию! обычно называют not, поскольку она становится отрицанием для того операнда, к которому применяется.
Чтобы проверить, имеют ли оба операнда значение TRUE, следует использовать оператор AND, который можно записать и как двойной амперсанд (&&). Оба оператора, AND и &&, являются логическими, их единственное отличие в том, что оператор && имеет более высокий приоритет, чем оператор AND. То же самое относится к операторам OR и ||. Оператор AND возвращает TRUE, только если оба операнда имеют значение TRUE; в противном случае возвращается значение FALSE.
Чтобы проверить, имеет ли хотя бы один операнд значение TRUE, следует использовать оператор OR, который можно записать и как двойную вертикальную линию (||). Этот оператор возвращает TRUE, если хотя бы один из операндов имеет значение TRUE.
При использовании оператора OR в программе могут появиться трудноуловимые логические ошибки. Если PHP обнаружит, что первый операнд имеет значение TRUE, он не станет вычислять значение второго операнда. Это позволяет экономить время исполнения, но вы должны внимательно следить за тем, чтобы код, от которого зависит корректная работа программы, не был помещен во второй операнд.
Проверить, имеет ли значение TRUE только один из операндов (но не оба сразу), позволяет оператор XOR. Этот оператор возвращает значение TRUE, если один и только один из операндов имеет значение TRUE. Если оба операнда имеют значение TRUE, оператор вернет значение FALSE.
Инвертировать логическое значение можно с помощью оператора NOT, который часто записывается и в виде восклицательного знака (!). Он возвращает значение TRUE, если операнд имеет значение FALSE, и значение FALSE, если операнд имеет значение TRUE.
В таблице ниже приведены некоторые логические выражения и их результаты:
Операции сравнения
В таблице ниже показаны операции сравнения, которые могут применяться либо с числами, либо со строками:
Операции сравнения
Операция
|
Наименование
|
Описание
|
---|
==
|
Равно
|
Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение
|
!=
|
Не равно
|
Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение
|
<
|
Меньше
|
Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение
|
>
|
Больше
|
Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение
|
<=
|
Меньше или равно
|
Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение
|
>=
|
Больше или равно
|
Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение
|
===
|
Идентично
|
Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение
|
Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку - не путать операцию присваивания (=) с операцией сравнения (==).
Приоритет операций
Безусловно, не следует слишком злоупотреблять стилем программирования, в котором последовательность выполнения операций в основном обусловлена использованием правил приоритета, поскольку код, написанный в таком стиле, является сложным для восприятия теми, кто в дальнейшем будет изучать его, но следует отметить, что операции сравнения имеют более высокий приоритет, чем логические операции. Это означает, что оператор с выражением проверки, подобном приведенному ниже
Код PHP
$var1 = 14; $var2 = 15;
if (($var1 < $var2) && ($var2 < 20))
echo "$var2 больше $var1 но меньше 20";
можно переписать как
Код PHP
...
if ($var1 < $var2 && $var2 < 20)
...
Инструкция if - else
Инструкция if
позволяет исполнить блок кода, если условное выражение в этой инструкции имеет значение TRUE; в противном случае блок кода не исполняется. В качестве условия может применяться любое выражение, включающее проверки на ненулевое значение, равенство, NULL с участием переменных и значений, возвращаемых функциями.
Не важно, какие отдельные условные выражения составляют условное предложение. Если условие истинно, исполняется программный код, заключенный в фигурные скобки ({}). В противном случае PHP игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию else
, после чего автоматически выполнит этот блок. Инструкция else не является обязательной
.
Синтаксис инструкции if:
If (условное выражение)
{
блок программного кода;
}
Если в результате вычисления условного выражения получается значение TRUE, то блок программного кода, расположенный после него, будет исполнен. В следующем примере если переменная $username имеет значение "Admin", будет выведено приветственное сообщение. В противном случае ничего не произойдет:
Код PHP
$username = "Admin";
if ($username == "Admin")
{
echo "Добро пожаловать на страницу администратора.";
}
Если блок программного кода содержит только одну инструкцию, то фигурные скобки необязательны, тем не менее, хорошая привычка – ставить их всегда, поскольку с ними код легче читается и редактируется.
Необязательная инструкция else – это блок программного кода, исполняемый по умолчанию, когда условное выражение возвращает значение FALSE. Инструкцию else нельзя использовать отдельно от инструкции if, поскольку у else нет собственного условного выражения. То есть else и if в вашем коде всегда должны быть вместе:
Инструкции if и else
$username = "no admin";
if ($username == "Admin")
{
echo "Добро пожаловать на страницу администратора.";
}
else
{
echo "Добро пожаловать на страницу пользователя.";
}
Не забывайте закрывать фигурной скобкой блок кода в инструкции if, если вы поставили фигурную скобку в начале блока. В блоке else тоже должны быть открывающая и закрывающая фигурные скобки, как в блоке if.
Все это хорошо, кроме случаев, когда вам требуется проверить несколько условий подряд. Для этого подойдет инструкция elseif
. Она позволяет проверять дополнительные условия, пока не будет найдено истинное или достигнут блок else. У каждой инструкции elseif есть собственный блок кода, размещаемый непосредственно после условного выражения инструкции elseif. Инструкция elseif идет после инструкции if и перед инструкцией else, если таковая имеется.
Синтаксис инструкции elseif немного сложнее, но следующий пример поможет вам разобраться в нем:
Проверка нескольких условий
$username = "Guest";
if ($username == "Admin")
{
echo "Добро пожаловать на страницу администратора.";
}
elseif ($username == "Guest")
{
echo "Просмотр не доступен.";
}
else
{
echo "Добро пожаловать на страницу пользователя.";
}
Здесь проверяется два условия, и, в зависимости от значения переменной $username, выполняются разные действия. И еще есть возможность что-то сделать, если значение переменной отличается от первых двух.
Тернарный оператор?:
Оператор?: – это тернарный (трехместный) оператор, который принимает три операнда. Он работает аналогично инструкции if, но возвращает значение одного из двух выражений. Выражение, которое будет вычисляться, определяется условным выражением. Двоеточие (:) служит разделителем выражений:
(условие) ? вычислить_если_условие_истинно: вычислить_если_условие_ложно;
В примере ниже проверяется значение, и в зависимости от его значения (TRUE или FALSE) возвращаются разные строки:
Создание сообщения с помощью оператора?:
$logged_in = TRUE;
$user = "Игорь";
$banner = (!$logged_in) ? "Зарегистрируйтесь!" : "С возвращением, $user!";
echo $banner;
Вполне очевидно, что приведенный выше оператор эквивалентен следующему оператору:
Код PHP
$logged_in = TRUE;
$user = "Игорь";
if (!$logged_in)
{
$banner = "Зарегистрируйтесь!";
}
else
{
$banner = "С возвращением, $user!";
}
echo $banner;
Инструкция switch
Инструкция switch
сравнивает выражение с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Например, представим себе переменную $action, которая может иметь значения "ADD" (добавить), "MODIFY" (изменить) и "DELETE" (удалить).
Инструкция switch позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.
Чтобы показать разницу между инструкциями if и switch, выполним проверку переменной на соответствие нескольким значениям. В примере ниже приведен программный код, реализующий такую проверку на базе инструкции if, а в последующем примере – на базе инструкции switch:
Проверка на соответствие одному из нескольких значений (инструкция if)
if ($action == "ADD") {
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
}
elseif ($action == "MODIFY") {
echo "Выполнить изменение.";
}
elseif ($action == "DELETE") {
echo "Выполнить удаление.";
}
Проверка на соответствие одному из нескольких значений (инструкция switch)
switch ($action) {
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
}
Инструкция switch берет значение, стоящее рядом с ключевым словом switch, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевыми словами case
, в порядке их расположения в программе. Если соответствие не найдено, не исполняется ни один из блоков. Как только совпадение обнаружено, выполняется соответствующий блок кода. Расположенные ниже блоки кода также исполняются – до конца инструкции switch или до ключевого слова break
. Это удобно для
организации процесса, состоящего из нескольких последовательных шагов. Если пользователь уже проделал некоторые шаги, он сможет продолжить процесс с того места, на котором прервался.
Выражение рядом с инструкцией switch должно возвращать значение элементарного типа, например число или строку. Массив можно задействовать только в виде его отдельного элемента, имеющего значение элементарного типа.
Выбор по умолчанию
Если значение условного выражения не совпало ни с одним из предложенных в инструкциях case вариантов, инструкция switch и в этом случае позволяет что-то сделать, примерно как инструкция else конструкции if, elseif, else. Для этого нужно последним вариантом в списке выбора сделать инструкцию default
:
Создание сообщения об ошибке с помощью инструкции default
$action = "REMOVE";
switch ($action) {
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
default:
echo "Ошибка: команда $action не допустима, ".
"можно использовать только команды ADD, MODIFY и DELETE.";
}
Кроме обычного, инструкция switch поддерживает альтернативный синтаксис – конструкцию из ключевых слов switch/endswitch
, определяющих начало и конец инструкции вместо фигурных скобок:
Инструкция switch завершается ключевым словом endswitch
switch ($action):
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
default:
echo "Ошибка: команда $action не допустима, ".
"можно использовать только команды ADD, MODIFY и DELETE.";
endswitch;
Прерывание исполнения
Если должен быть исполнен только блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break. Интерпретатор PHP, встретив ключевое слово break, перейдет к исполнению строки, расположенной после закрывающей фигурной скобки инструкции switch (или ключевого слова endswitch). Но если не использовать инструкцию break то проверка продолжается в последующих ветвях case конструкции switch. Ниже показан пример:
Что происходит при отсутствии операторов break
$action="ASSEMBLE ORDER";
switch ($action) {
case "ASSEMBLE ORDER":
echo "Собрать заказ.
";
case "PACKAGE":
echo "Упаковать.
";
case "SHIP":
echo "Доставить заказчику.
";
}
Если переменная $action будет иметь значение "ASSEMBLE ORDER", результат работы этого фрагмента будет следующим:
Собрать заказ.
Упаковать.
Доставить заказчику.
Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение "PACKAGE", то будет получен следующий результат:
Упаковать.
Доставить заказчику.
Иногда, отсутствие операторов break бывает полезным, как в приведенном примере, где формируются стадии заказа, но в большинстве случаев следует использовать этот оператор.
Типы данных
Циклы
1
2
3
4
5
6
7
8
9
10
В повседневной жизни часто необходимо принять какое не-будь решение, в зависимости от какого то условия. Например, если на выходные погода будет теплой, то мы поедим на море, иначе, если будет пасмурно, то посидим дома.
В программировании это тоже встречается очень часто. Для этого существуют два условных операторов, это if-else и switch-case
. В этой статье я Вам расскажу об операторе if-else, а в следующей статье об switch-case.
Синтаксис условного оператора if-else
следующий:
Если условие истина (true), то выполняется код из блока if, иначе, если условие ложь, то выполняется код из блока else.
Для лучшего понимания возьмем такой простой пример, у нас есть некая сумма денег и мы хотим купить автомобиль, и здесь сразу возникает такое условие, если у нас есть достаточно денег то мы можем купить данный автомобиль, иначе не можем.
Var money = 35000; // Допустим у нас есть 35 000 евро
//Машину которую мы хотим купить стоит 50 000 евро. И возникает такое условие
if(money > 50000){
document.write("Мы можем купить автомобиль");
}else{
document.write("Недостаточно денег для покупки машины");
}
Сохраняем документ, открываем его в браузере и видим, что на странице вывелось такое сообщение
"Недостаточно денег для покупки машины". Если же у нас было бы больше 50 000 евро, то выполнился бы код из блока if. Если бы у нас было бы ровно 50 000 евро, то мы также не смогли бы купить автомобиль, потому что 50 000 не больше 50 000. Для того чтобы условие в данном случае было истина, то нужно написать знак больше либо равно (>=).
Замечание!
Логическая операция равно пишется двумя знаками равенства (==)
. Также присутствует и логическая операция меньше или равно (
использование фигурных скобок
Если присутствует только один оператор то фигурные скобки ставить необязательно, если в блоке больше чем один оператор, то фигурные скобки нужны обязательно.
Пример приведенный выше, будет прекрасно работать и без фигурных скобок, так как в обоих блоках находятся только по одному оператору.
Внутри if можно написать любые логические операции
, будь то они простые или сложные. Можно использовать и операторы AND (&&) и OR (||).
Замечание!
Присутствие блока else, не является обязательным
.
Например, если a равен b, и c равен d, то выводим соответствующее сообщение, иначе если отсутствует блок else, то просто идем дальше, к следующей строчке.
Var a = 4,
b = 4,
c = 8,
d = 8;
if((a == b) && (c == d)) document.write("a равен b И c равен d");
document.write("Следующая строчка кода");
Оператор if - else if - else
После блока if, может последовать один и больше блоков else if, и в конце уже блок else. Это удобно в случае, когда нужно использовать больше чем одно условие.
Для лучшего понимания возьмем какой-то пример из повседневной жизни. Например, у нас есть определенное кол-во розеток. Если у нас в комнате только одна розетка, то мы можем подключить только одно устройство, если две розетки то мы можем подключить две устройства и если больше, то мы можем подключить к электрической сети, все устройства из дома.
Теперь перейдем к программированию.
Var socket = 2; // Кол-во розеток в доме
if(socket == 1) document.write("
Мы можем подключить только одно устройство
");
else if(socket == 2){
document.write("Мы можем подключить только две устройства
");
document.write("Например телевизор и ноутбук
");
}else{
document.write("Мы можем подключить к электрической сети все устройства из дома
");
}