Конструкция if - else. Условие: если то, делай это, иначе делай другое. Сложно? Мне самому так бы было неясно:) В теме опишу все на пальцах!
Оказывается такая конструкция относится к управляющим структурам в php. Как сказала одна умная книжка:
Управляющие структуры - это средства, которые позволяют управлять поведением программ.К таким структурам также относится и конструкция do - while, о которой я писал ранее. На самом деле, так оно и есть, ведь мы таким образом управляем нашим необъемным пространством php-сущности, дабы воссоздать чудо неземное. Это было немного отступление от темы - вернемся к нашей конструкции if - else. Сначала давайте напряжем наш мозг, вспомнив и представив себе конструкцию do-while, как она работает. Провернем многовариантные махинации с ней в голове... Теперь можно переходить!
Снова обращусь к примеру с тренером и футболистом, который пытается запинать мяч в ворота. Представим, как это будет выглядеть на php, как будто тренер смотрит на все глазами обработчика. Футболист пытается забить гол в ворота и судорожно совершает попытки удара по мячу. Вот как видит это тренер и что у него творится в мыслях в голове:
<? if (мяч в воротах) { я хвалю футболиста; } else { он будет бить по мячу, пока не забьет}Разберем, что же на уме у нашего обработчика-тренера: он смотрит на то, как футболист нежится на поле с мячом и ставит себе условие: если мяч в воротах (if ( ) ), то есть футболист забил гол, я его похвалю ( { } ), так как он выполнил свою задачу - забил гол. Если же он не забивает гол, то есть ситуация происходит иначе, то я дам ему команду: бить по мячу, пока не забьет гол (else { } ). Теперь кратко: если мяч в воротах - я хвалю футболиста, иначе - говорю ему продолжать пытаться забить гол. Суть какая: здесь уже не цикл идет, а именно проверка ситуации условием нашим if - else. То есть проверка ситуации происходит однократно в момент прочтения кода обработчиком. Давайте посмотрим, как вся наша реализация будет выглядеть на территории php-области. Рассмотрим пример:
<? $a=5; if ($a<7) { echo $a; } else { echo "Переменная a больше 7"; } $b=5; if ($b<3) { echo $b; } else { echo "Переменная b больше 3"; } ?>Конечно разберемся: рассмотрим первый случай с переменной $a. Изначально мы поместили в нее значение, равное 5. Дальше идет наше условие if - else: мы проверяем, если наша переменная $a меньше 7, то мы выводим эту нашу переменную (с помощью конструкции echo). Если же наша переменная не меньше 7, то выводим сообщение "Переменная a больше 7". В нашем случае видно, что наша $a имеет значение 5, что соответственно меньше 7 (мне уже сложно от этой математики), поэтому выполняется условие: вывести переменную $a (echo $a). Соответственно условие, которое определяется после else (иначе) выполняться не будет, так как сработало условие - истина, что 5<7 и исполнилась только команда в первых скобках.
Второй случай с переменной $b: тут дело состоит по другому. Наша переменная имеет значение 5, что соответственно больше 3 и не определяется нашим условием: if ($b<3). Теперь условие ложь, поэтому выполнится вторая часть нашей конструкции - иначе (else). Отсюда видим, что выведется на экран сообщение "Переменная b больше 3". Вот картина, исходящая из наших условий, уже сформированная на сайте пользователя:
5Переменная b больше 3Вывелась переменная $a и второе условие иначе с переменной b. У нас слились эти два сообщения, потому что мы их не разделили тегом <br>. Особенность такой конструкции какая: мы можем использовать лишь первую часть нашего условия - только условие if () { }. Здесь проверка будет только на то условие, которые мы укажем в круглых скобках и теперь уже, если наше условие не соответствует выполняемому, то не выведется ничего. Вот смотрим на примере:
<? $с=6; if ($с>8) { echo $с; } ?>После выполнения данного кода в результате не получим ничего (помимо того, что в значении переменной $c будет храниться 6) на экране, так как наше условие - ложь и оно не выполнится. А условия, определяющего иной исход событий (else) у нас нету - отсюда и не выведется ничего на наш запрос такой. Рассмотрим, как можно задавать несколько условий для нашего обработчика. Первый случай, если мы хотим, чтобы одновременно выполнялось несколько условий:
<? $d=2; $e=4; $f=$d+$e; if (($d==2) and ($e==4)) { echo $f; } ?>В переменную $f мы занесли сумму двух других переменных. Мы выведем ее только в том случае, когда будет выполняться одновременно два наших условия: переменная $d=2 и переменная $e=4 (помним, что в условиях приравнивание оформляется двойным знаком равно ==). Теперь начинка нашего условия if выполнится только тогда, когжа будут истинны два этих условия. В нашем случае, исходя из начальных данных данные условия выполняются оба, соответственно команда echo $f, заданная внутри квадратных скобок, будет успешно выполнена и на экране увидим цифру 6.
Заметили, что это реализуется с помощью слова and, условия которым разделяются в круглых скобках. Их можно продолжать и далее, не ограничиваясь только двумя, каждый раз вставляя and между условиями. Другой вариант такого типажа, если мы хотим чтобы выполнялось одно из нескольких условий оформляется с помощью оператора or (или). На том же самом месте, где стоял оператор and, вставляется оператор or. То есть теперь наша команда внутри квадратных скобок будет выполняться в том случае, если даже одно из условий будет выполняться:
<? $g=5; $h=10; $j=$h/$g; if (($g<4) or ($h>8)) { echo $j; } ?>Видим что первое условие ложно, переменная $g на самом деле больше 4, это условие ложно. Но второе условие, что $h>8, истинно, соответственно проверка условия прошла и должно выполниться то, что находиться в квадратных скобках - вывод переменной $j. Вот собственно такой принцип функционирования этих символов.
Помимо and и or имееются и другие операторы, определяющие выбор условий в своих целях. Но в основном используются только данные операторы. Другой вариант использования конструкции if - else. Такую трактовку я редко встречал (да учитывая мою практику я вообще редко что встречал), но все же приведу вариант, как можно ещё использовать добро такое:
<? $k=12; $l=15; if ($k>$l) { echo "k>l"; } elseif ($k<$l){ echo "k<l"; } else { echo "k=l"; } ?>Алгоритм такой: проверяется условие в первых круглых скобках: если оно истинно, то выполняется код в скобках. У нас оно ложь (k не больше l), значит этот блок if ( ) { } не выполняется. Далее следует блок elseif, который выполняется только в том случае, если первое условие ложь, т.е. не выполняется.
В нашем случае как раз такой вариант, т.е. проверяется второе условие, что k меньше l. Оно истинно, соответственно код внутри будет подвержен исполнению. Ну а третья часть - наше "иначе" (else) выполняться в нашем случае не будет, так как выполнилось уже второе условие. А если бы ни первое, ни второе условие не было истинным в другом примере, то выполнился бы код из части "иначе". Отсюда надо понять, что код из части иначе будет выполняться только тогда, когда все остальное ложно. Думаю по данной конструкции я излил вам все, что считаю полезным для вас и практичным.
Комментариев нет:
Отправить комментарий