http://sulfurzona.ru/
News
Service
Magazine
Software (Battle City Game, Wallpaper manager, Superpad, VG-NOW, Puzzle Game, Netler Internet Browser, ..)
Wing-Thunder Game (fly simulator)
Dune Game (Dune III, Dune IV, Cheats, Forum, ..)
Games free
Turbo Pascal (Assembler, Docs, Sources, Debbugers, ..)
Books (Docs for developers)
Guest book
Компьютерная диагностика двигателя автомобиля (адаптер К-линии)Компьютерная диагностика двигателя автомобиля (адаптер К-линии)
 
 
Скачать игру Крыло-Гром (Wing-Thunder) бесплатно
 
 

PHP и WEB для новичков (часть 3)

 

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

 
Автор: Владислав Демьянишин
 
PHP и WEB для новичковПрограмма (php-скрипт) выполняется по одному оператору, т.е. оператор за оператором, начиная с первого оператора до последнего. Однако в большинстве случаев такого хода событий недостаточно.
 
Иногда необходимо, чтобы программа в определенный момент (например, в зависимости, от действий пользователя, или от времени, или от внешних условий) вела себя по-разному. Для организации такого поведения применяется условный оператор if( ).
Смысл условного оператора состоит в том, чтобы провести анализ некоторого логического условия, и в соответствии с тем, выполняется это условие или нет, передать управление соответствующему оператору. В качестве условия может быть выражение, возвращающее логическое значение булевского типа.
Результатом анализа условия может быть значение true (правда, истина), т.е. условие выполняется (еще говорят, что условие правдиво, справедливо или истинно) и false (ложь), т.е. условие не выполняется (не истинно). Схема условного оператора:
 
if (условие) {оператор1;}
   else {оператор2;}
 
Условный оператор выполняется следующим образом. Предварительно вычисляется выражение условия, указанное в круглых скобках после служебного слова IF.
Если условие выполняется, то управление передается оператору щ1, указанному после круглой скобки, если нет, то выполняется оператор щ2, указанный после служебного слова else. При этом часть условного оператора, начиная со слова else, может отсутствовать.
В качестве примера рассмотрим скрипт, который выводит одну из двух строк в зависимости от выполнения условия.
 
$a = 3;
if ( $a < 5 ) echo "А меньше пяти";
   else echo "А не меньше пяти";
 
В зависимости от того, $a меньше пяти или нет, выполняется оператор после if() (если меньше), или после else (если не меньше).
Зачастую в той или иной ветви условного оператора возникает необходимость выполнять несколько операторов. Для этого применяют составной оператор, то есть несколько операторов заключают в фигурные скобки:
 
$my_time = time();
$hour = date("G", $my_time);
 
echo "жизнь – это борьба.";
if($hour<12) {
   echo "до обеда";
   echo " – с голодом";
   }
   else {
            echo "после обеда";
            echo " – со сном";
          }
 
Следует пояснить, что time() и date() – это вызовы стандартных функций для получения текущего времени и даты. По сложившейся традиции время исчисляется в секундах, прошедших с момента 1 января 1970 года (так называемая эра Unix).
Это позволяет хранить время в одной переменной целого типа, а уже потом преобразовать ее в дату и время в привычном написании для человека. Таким образом, после выполнения оператора $my_time = time(); будем иметь значение текущего времени в переменной $my_time.
Для форматирования времени в форму, понятную для человека, существует функция date(). В скобках после имени функции должны быть два параметра – формат выдачи и значение времени. Пример:
 
date(“d.m.Y”, $my_time); // для 22 ноября 2008 года выдаст строку “22.11.2008”
 
То есть каждая буква, указанная в строке формата даты имеет некоторое назначение. В данном случае символ “G” означает время суток в 24-часовом формате. После выполнения оператора $hour = date(“G”, $my_time); в переменной $hour будет содержаться текущий час суток.
Следующая конструкция сравнивает величину в переменной $hour с числом 12 и если текущий час меньше, то скрипт выдаст строки "до обеда...", иначе строки "после обеда...".
 
Разумеется, если нет необходимости назначать альтернативные действия, то ветвь, начиная со служебного слова else, можно не указывать.
Кроме того, для проверки нескольких условий существует конструкция if()..elseif()..else. Если первое условие в if() не выполняется, то проверяется истинность следующего условия elseif() и так далее. Например:
 
$my_time = time();
$hour = date("G", $my_time);
 
if($hour < 4) { echo "ночь"; }
   elseif($hour < 12) { echo "утро"; }
            elseif($hour < 18) { echo "день"; }
                    else{ echo "вечер"; }
 
В этом примере видно, что текущий час проверяется на вхождение в тот или иной период времени и выдается соответствующее слово.
Следует помнить и о логических операциях (см. предыдущий урок PHP), которые позволяют конструировать сложные условия. Например, следующий код определяет, является ли выходным текущий день.
 
$weekday = date("w");
if($weekday == 0 ¦¦ $weekday == 6){ echo "выходной"; }
   else{ echo "будни"; }
 
В данном примере используется свойство функции date() возвращать форматированную текущую дату, если не задан второй параметр. После выполнения данной команды в переменной $weekday будет текущий день недели.
Дни недели нумеруются с 0 (воскресенье) до 6 (суббота). Условие будет выполняться, если день недели будет иметь номер 0 или 6 (поскольку применена логическая операция "ИЛИ" в виде знака "¦¦"), или будет выполняться альтернативная ветвь else. Разумеется, можно было бы обойтись двумя условиями:
 
$weekday = date("w");
if($weekday == 0){ echo "виходной"; }
   elseif($weekday == 6){ echo "виходной"; }
            else{ echo "будни"; }
 
но такой подход был бы неоптимальным, поскольку получается больше кода, а ведь по сути выполняется одно и то же действие. Чтобы проиллюстрировать применение других логических операций, немного перепишем код:
 
$weekday = date("w");
if($weekday != 0 && $weekday != 6){ echo "будни"; }
   else{ echo "виходной"; }
 
Операция && (логическое “И”) имеет значение true, когда оба операнда имеют значение true. Т.е. условие данного примера будет истинно, если $weekday не равно 0 и не равно 6.
При конструировании сложных условий следует помнить о приоритетах операций, и оправдано пользоваться круглыми скобками. Например, построим условие, которое будет выполняться только во второй половине выходного дня:
 
$weekday = date("w");
$hour = date("G");
 
if($hour >= 12 && ($weekday == 0 ¦¦ $weekday == 6)){ echo "Аллоха!"; }
 
В данном условии сначала срабатывает логическое выражение ($weekday == 0 ¦¦ $weekday == 6), поскольку оно заключено в скобки и, значит, имеет высокий приоритет, а потом выполняется операция логического “И” с условием $hour >= 12. Операция && имеет приоритет, выше, чем у ¦¦, поэтому если бы мы не воспользовались скобками, то выражение выполнялось бы в другом порядке – сначала операция $hour >= 12 && $weekday == 0, а потом ¦¦ $weekday == 6, что, естественно, дало бы уже совсем другой результат.
Еще один нюанс – это довольно распространенная ошибка, когда вместо операции “равно” (“==” – два знака равенства) применяют оператор присваивания “=” (один знак равенства), например
 
$weekday = date("w");
if($weekday = 0){ echo "воскресение"; }
echo "weekday=$weekday";
 
Если выполнить данный скрипт, то мы увидим, что "воскресение" никогда не будет выдано, но всегда будет выдаваться “weekday=0”. Это происходит потому, что результатом условного выражения будет значение, присваиваемое оператором присваивания.
Т.е. 0 – это false, поэтому условие никогда не будет истинноъ и не сработает. В условии аналогично можно применять числовые переменные, например:
 
if($count){ echo "Аллоха!"; }
 
Это условие сработает, если переменная $count не равна 0 (или пустой строке, что тоже эквивалентно false). Или
 
if(!$count){ echo "Аллоха!"; }
 
наоборот, сработает только тогда, когда $count будет равно 0 или пустой строке.
Учитывая все выше изложенное можно сконструировать даже такую экзотическую конструкцию
 
if( !($weekday = date("w")) ){ echo "воскресение"; }
 
© Владислав Демьянишин
 
На нашем сайте можно не только бесплатно скачать игры, но и документацию и книги по программированию на MIDLetPascal, Turbo Pascal 6, Turbo Pascal 7, Borland Pascal, по программированию устройств Sound Blaster, Adlib, VESA BIOS, справочник Norton Guide и много другой полезной информации для программистов, включая примеры решения реальных задач по созданию резидентных программ.
 

Журнал > Программирование > PHP и WEB для новичков (HTML, JavaScript, PHP, MySQL) > PHP и WEB для новичков (часть 3): Условный оператор IF
 
 
 
 
 
 
На главную страницу На предыдущую страницу На начало страницы