🧙Конкурс сказок!
Уроки PHP
(OFF) Sanch0SEK (B) 12 ноя 2017

Условия

По ходу жизни мы постоянно сталкиваемся с ситуациями, когда наши дальнейшие действия делаются не как обычно "на автомате", а зависят от неких сторонних факторов. Например, зонт мы берем с собой не всегда, а только в том случае, если на улице дождь либо уже идет, либо хотя бы ожидаем на время нашего предстоящего нахождения на улице; и не берем его (зонт) иначе - если дождя нет и не планируется! Или вот еще пример: планируем на выходные - на субботу, например - встречу с друзьями на шашлык-коньяк, если в эти конкретные день и время все (!) будут иметь возможность присутствовать (не все могут быть выходными, или же не все будут свободны и т.д.); иначе если у всех получается на воскресение - можно перенести мероприятие на следующий день; иначе переносим мероприятие на неопределенный срок и результат его планирования уже будет виден по ходу прояснения новых обстоятельств…
Как видно по приведенным выше примерам мы сталкиваемся с ситуациями, из которых выходит как минимум два варианта развития событий, и выбрать тот - единственный -
предстоит исходя из прилагающихся к ситуации данных и, собственно, самих Условий - даже критериев) - выбора. Проще говоря имеется ситуация, и вместе с ней имеется несколько вариантов действий, и для каждого такого варианта есть собственные критерии, удовлетворив (и только удовлетворив!!!) которые (точнее любой из них) возможно однозначно остановить выбор на конкретном варианте.
Всё это - довольно яркий пример Условий в жизни, и я намеренно выделил в тексте некоторые ключевые слова (если/иначе если/иначе) - к счастью, разработчики ЯП не глупее Нас с Вами, и благодаря их стараниям любой ЯП поддерживает и предоставляет программисту возможность описывать собственные условия, исходя из которых программа по ходу выполнения будет принимать решение о дальнейшем пути выполнения - выделенные мной слова выше являются ключевыми не только в частности в плане работы конкретных ЯП, а и в плане Условий в общем, о чем мы и поговорим в данной статье!

Суть условий и случаев их применения в жизни вроде как ясна, так что теперь приступим к более тесному знакомству с ними - на уровне ЯП - конкретно на PHP 8-)

Итак, PHP способен воспринимать наши условия и будучи формальным языком он требует, чтобы указанные Нами условия имели именно такой формат (согласно родному для него C-подобному синтаксису):

if(<условие1>) {
<действие1>;
}
/*
При необходимости и <условий>, и относящихся к ним <действий> может быть несколько, но об этом несколько позже - ниже!
*/
С точки зрения синтаксиса всё просто: после if следуют круглые скобки, внутри которых описывается условие, затем в фигурных скобках пишутся выражения, которые необходимо выполнить если условие Истинно. И еще. Далее я буду часто говорить о продолжении выполнения кода после выхода из условия - это означает вот что. Блок кода в котором описывается условие может состоять из множества блоков поменьше (перечисление нескольких вариантов и их действий, о чем ниже) и от этого быть довольно большим (занимать десятки, а то и сотни строк), и при любом исходе разбора условия (был ли истинным какой-то вариант и выполнились его действия, или не был и ничего не выполнилось) код продолжит выполняться со строки, следующей за всем условием - всеми его строками, в которых описаны и варианты условий, и их действия, в примере выше - за последней закрывающей фигурной скобкой, относящейся к конкретному условию. Сейчас это звучит и выглядит запутанно, но пока запомните что это есть так, а дальше всё прояснится ;-)

Теперь рассмотрим что к чему, но для большего понимания дальнейших деталей по теме предварительно спешу прояснить вот что. Очень-очень важно понимать, что результат логического разбора Вашего условия может быть любым (одним и только одним!) из двух: условие может быть либо удовлетворено - это когда на него можно ответить твердым Да, либо не удовлетворено - это когда ответ Нет! Условия рассматриваются с точки зрения логики (Математической Логики!, из чего следуют некоторые нюансы, о которых ниже) и результат их разбора - логический ответ: True (по-русски значит Истина и в русскоязычных кругах используется официально!) - это если Да, и False - (Ложь) - если нет! Например, для условия
2 < 5
("два меньше пяти") ответ будет однозначный - True (Истина), потому что "два" действительно меньше "пяти" - условие удовлетворено и указанные для него действия выполнятся. Поменяв местами цифры этого условия ("5 < 2") результат станет противоположным - False (Ложь, ибо пять не меньше двух) - условие не удовлетворено и, следовательно, указанные для него действия не выполнятся. Это, пожалуй, хоть и довольно простое, но тем не менее чуть ли не самое важное, что нужно понимать по теме Условий, и только если логика описанного выше Вам понятна - только тогда можем продолжать вникать в тему! Но даже если это и не так - пока не понятно - всё равно продолжайте - понимание может прийти после рассмотрения последующих примеров! :-)

Итак, вернемся к приведенному выше описанию формата условия, точнее к его рассмотрению. Если <условие1> Истинно (повторюсь: если ответ на него однозначный - Да) - выполняется блок кода <действие1>, иначе условие не удовлетворено: <действие1> не выполняется и выполнение кода продолжается после выхода из всего условия к основному коду.

Теперь рассмотрим реальный, рабочий пример:

<?php

echo 'Два меньше пяти? - Вот в чём вопрос!<br>';

if(2 < 5) { // если 2 меньше 5
echo 'Да, 2 меньше 5!<br>';
}
Описанное в данном случае условие гласит "если(2 меньше 5) { отобразить 'Да, 2 меньше 5'; }, и так как 2 действительно меньше пяти, после "приветственного" выражения выполняется относящееся к нему действие - на страницу выводится указанный текст.
Как видите, всё очень просто :-) Но этот случай хоть и открывает перед Нами новые возможности в разработке, он настолько прост, что на одном нём далеко не уйдешь. А что если нужно проверить введенный пользователем возраст и если он равен 18 или больше - отобразить данные закрытой части сайта, иначе сообщить о невозможности такого действия!? if() на самом деле гораздо более гибкий, чем мы сейчас думаем, и помимо прочих (их мы рассмотрим далее) предлагает такой формат описания условия:

if(<условие1>) { // если
<действие1>;
}
else { // иначе
<действие2>;
}

Теперь реальный пример:

<?php

$age = rand(1, 100); // будем считать, что это число было введено пользователем :-)

if($age >= 18) { // больше или равно
// здесь блок "истинно": вывод контента для совершеннолетних
echo 'Здесь будет контент для совершеннолетних!';
}
else { // иначе
// а здесь "иначе" - ложно - отказ
echo 'Контент доступен только совершеннолетним!';
}
Здесь появилось новое ключевое слово PHP - else - оно и называется, и по логике означает "ИНАЧЕ" - это вариант добавления альтернативной реакции на условие, и его использование не обязательно. То есть если мы используем только if() - в случае ложности условия ничего не выполнится и произойдет выход из условия и продолжение выполнения кода. Если же используется else: в случае истинности условия if() будет выполнен код этого условия, иначе код else. В таком случае хотя бы какой-то блок кода выполнится в любом случае! :-)


Как Вы, наверное, заметили, к использованному ранее оператору "<" - меньше, добавился новый - ">=" - больше или равно - это операторы логического сравнения, только два из них. Логическими они называются потому, что они не редактируют никаких данных (как, например, редактируют строку функции работы со строками) - они только сравнивают несколько значений между собой опираясь на математическую логику! Эти операторы не должны вызвать у Вас непонимания, ибо они идентичны таковым из школьной алгебры, но на всякий случай приведу список тех из них, которые поддерживает PHP - как он их "видит" и как воспринимает:

< - логическое МЕНЬШЕ
> - логическое БОЛЬШЕ
<= - логическое МЕНЬШЕ ИЛИ РАВНО
>= - логическое БОЛЬШЕ ИЛИ РАВНО
== - логическое РАВНО
!= - логическое НЕ РАВНО
=== - логическое РАВНО с учетом типа данных (об этом в статье о переменных и типах данных)

Теперь у нас еще больше возможностей для формирования условий, но в реальной работе даже этого будет очень недостаточно, но обо всем по порядку. Давайте сформируем такое условие: отобразим на странице текст о том, что пользователь младше 18, или что ему 18, или что он старше 18 соответственно!?
Опираясь только на имеющиеся у нас навыки конструируем что-то вроде такого:

<?php

$age = rand(1, 100); // будем считать, что это число было введено пользователем :-)

if($age < 18) { // меньше
echo 'Вы младше 18';
}

if($age == 18) { // равно
echo 'Вам 18';
}

if($age > 18) { // больше
echo 'Вы старше 18';
}
И это будет работать, причем работать правильно. Но выглядит такая запись очень некошерно и продолжая в таком духе Вы и сами очень скоро на личном опыте убедитесь, насколько это плохо. Однако давайте немного задержимся на этом примере и проследим ход его выполнения:
* возраст меньше 18? Да - выполнится его действие и выход из этого условия;
* возраст равен 18? - Нет - ничего не делаем и выходим из этого условия;
* возраст больше 18? - Снова нет и выход из условия без каких-либо действий;

Как Вы понимаете, можно быть либо младше 18-ти, либо 18-ти летним, либо старше 18 - только один из вариантов и никак не несколько, и в этом суть детали, которую я хочу донести: приведенный выше пример проверки возраста охватывает все три варианта оного, но не смотря на это по своей структуре является тремя независимыми условиями. Дело в том, что если, например, возраст меньше 18-ти - условие истинно и следуя Логике остальные варианты уже можно не рассматривать (повторюсь, что возраст может относиться только к одному (!) из перечисленных вариантов) ибо истинный вариант определен, но всё же они будут рассмотрены, потому как независимы друг от друга, и последующие варианты ничего не знают о результатах разбора предыдущих. Сейчас это кажется незначительным пустяком, но на самом деле это очень крутое неудобство, в чем Вы и сами уже можете убедиться попрактиковавшись над формированием собственных условий из жизни, например :-)

К счастью, как я говорил в самом начале: разработчики Языков Программирования не глупее нас и, конечно же, предусмотрели этот случай! :-)
Для наведения порядка в приведенном выше беспорядке есть еще один вариант условного оператора if() - нечто удивительное - серединка между уже знакомыми нам if() и else - elseif() - и переводится, и логически означает "иначе если". Суть в том, что выполнение к этому блоку условия придет в том (и только в том) случае, если предыдущее условие не было удовлетворено. То есть если предшествующее ему "если" (или "иначе если) не прокатило, то это "иначе - если" - очередной блок описания очередного варианта условия. Лучше давайте взглянем на очередной пример:

<?php

$age = rand(1, 100); // будем считать, что это число было введено пользователем :-)

if($age < 18) { // меньше
echo 'Вы младше 18';
}
elseif($age == 18) { // иначе, если равно
echo 'Вам 18';
}
elseif($age > 18) { // иначе, если больше
echo 'Вы старше 18';
}
else { // иначе
echo 'Столько не живут!';
}
Вот теперь варианты условий будут перебираться до тех пор, пока либо какое-либо из не будет удовлетворено, либо до блока else. Если условие удовлетворится на самом первом варианте (возраст меньше 18) - выполнятся соответствующие ему действия, затем произойдет выход из условия с пропуском
Навигация (1/2): далее >

Комментарии (7)

учите котлин ребята:клоун2
Он изищныц
я как раз такую тему написал:клоун2
Новая версия и пока что черновая. Продолжение и редактирование следует! ;-)
Поменяв местами цифры этого условия ("5 > 2") результат станет противоположным - False чуть ошибся:)
Точно! Благодарю за подсказку, исправил!!! :-)
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Уроки PHP
Моя Ферма
Сотни растений и животных, множество интересных...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play