Программирование в Web Выпуск 5 от 19/04/2006 Основы PHP - Урок-5
Программирование в Web
ОСНОВЫ PHP
Внимание!!!
Все материалы уроков, публикуемых в этом и во всех последующих выпусках рассылки «Программирование в Web», являются интеллектуальной собственностью авторов и ведущих рассылки. По всем вопросам размещения или публикации данных материалов на собственных ресурсах или где-либо еще, или иного использования, не связанного с личным ознакомлением и самостоятельным обучением, - обращайтесь на адрес автора.
Любое использование этих материалов в коммерческих или иных целях, явно не разрешенное автором, является незаконным.
У Р О К — 5
Здравствуйте уважаемые подписчики!
PHP нельзя было бы назвать языком программирования, если бы в нем не было управляющих конструкций. Это мое мнение. Но думаю вы тоже согласитесь. Ведь, если нет этих конструкций, то программа будет выполняться последовательно, строка за строкой, а насколько сложно будет написать хоть простейшую программу таким образом?
УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ:
ЧАСТЬ-1 — КОНСТРУКЦИИ ВЕТВЛЕНИЯ.
Конструкция if:
Применяется в следующем контексте:
<?php
if ($y==0) print "Переменная $y равна нулю";
?>
Здесь проверяется значение переменной $y. Если это значение равно нулю, то выполняется следующая инструкция, в противном случае эта инструкция пропускается. Заметьте, что для сравнения используется оператор "==", это в данном случае. Вообще он проверяет значение без учета типа. То есть, в PHP нулем может в некоторых случаях считаться и значение false, а единицей значение true. Если же вы желаете проверить точное совпадение, то, вместо "==" лучше использовать "===", в этом случае будет проверено не
только значение, но и тип содержимого (если помните, то PHP легко и негласно способен преобразовывать типы переменных, если посчитает нужным, поэтому важно учитывать такие ситуации).
Эта конструкция представляет простейший вариант собственного представления. А если мы хотим ввести альтернативу в условие проверки? Вот так надо будет сделать:
<?php
if ($y==0) print "Переменная $y равна нулю";
else print "Переменная $y не равна нулю.";
?>
Опять же, и это не самый сложный случай. Если вы желаете, чтобы по условию выполнялось не одно действие, а несколько, то все эти действия должны будут помещаться в фигурные скобки ({ и }).
Например:
<?php
if ($y==0) {
print "Переменная y равна нулю. ";
print "А вы как думали?";
}
else {
print "Переменная не равна нулю. ";
print "Она равна $y";
}
?>
Примечание: Пока я использую только функции print, потому, что другие функции и команды мы еще не проходили.
При написании сложных инструкций главное не забывать ставить закрывающую скобку, иначе интерпретатор будет выдавать ошибку. Вообще, прелесть PHP еще в том, что интерпретатор сообщает об ошибке сам, где, и в какой строке и конкретно что ему не нравится. Так проще обнаружить ошибку. Хотя иногда забытая точка с запятой или фигурная скобка или лишние специальные символы могут вызвать массу проблем.
А вот еще одна конструкция:
<?php
if ($y==0) {
print "Переменная y равна нулю. ";
print "А вы как думали?";
}
elseif ($y==1) {
print "Переменная действительно не равна нулю.";
print "Она ведь равна единице!";
}
else {
print "Мда..., переменная не равна ни единице, ни нулю, а равна $y";
}
?>
Команда elseif пишется слитно (но вы также можете открыть другую, вложенную конструкцию if-else, если в этом возникнет необходимость, благо PHP поддерживает бесконечную вложенность конструкций if-else). Эта конструкция позволяет использовать несколько логических условий в определении действий, хотя у нее есть более продвинутый вариант, но часто бывает необходимо использовать именно ее, так как более продвинутый вариант предпочтительно использовать в случаях большого множества выборов,
а не одного-двух-трех. Для незнакомых с английским языком немного поясню. Команда if предполагает использование какого-то логического выражения, проверяемого на начальном этапе, то есть, if (если) (выражение не ложно) {выполняется какая-то команда}, далее интерпретатор проверяет, есть ли следом инструкции else или elseif, и если их нет, то выполняются идущие следом команды, но, если встречается команда else (иначе), тогда выполняет
ся ее блок, а если встречается elseif (иначе если), то проверяется ее логическое выражение и при выполнении условий выполняются команды этого блока. Вот как это могло бы выглядеть на русском языке:
<?php
Если (бяка равна бяке) то {пишем, что это бяка;}
Иначе если (бяка равна каке) то {пишем, что это кака;}
Иначе {пишем, что это ни бяка и ни кака;}
?>
Примечание касательно фигурных скобок: Лучше фигурные скобки ставить даже если команда, при соблюдении условия является однострочной, так меньше шансов написать что-то неправильно и проще найти ошибку, а также легче позже расширить набор инструкций. Мало-ли, может вы в дальнейшем пожелаете что-то добавить в блок, например, "Если", тогда вы, не обращая внимание на количество фигурных скобок просто допишете новую команду и
все. Но можно, однострочные команды в условных проверках писать и без фигурных скобок, как в первом примере. Здесь есть некая аналогия с бэйсиком, в котором присутствует команда then, а вообще, эта конструкция очень напоминает аналогичную в С++.
Конструкция SWITCH:
Теперь о другом варианте конструкции ветвления.
По аналогии с С++ и Дельфи в PHP есть некая переключающая инструкция, позволяющая сделать выбор из множества вариантов. Вот она:
<?php
switch (условие) {
case значение 1:
print "Значение такое-то";
break;
case значение 2:
print "Значение другое";
break;
case значение 3:
print "Значение третье";
break;
default:
print "Действие по умолчанию";
}
?>
и ее альтернативный вариант:
<?php
switch (условие):
case значение 1:
print "Значение такое-то";
break;
case значение 2:
print "Значение другое";
break;
case значение 3:
print "Значение третье";
break;
default: "Действие по умолчанию";
endswitch;
?>
Здесь, в команде switch мы задаем какое-то проверяемое условие, в соответствии с которым будет выполнена та или иная ветка конструкции (здесь также допустимо использовать множественность команд, при соблюдении определенного условия). Команды case устанавливают возможные варианты значения, принимаемые условием и в соответствии с этим значением дают возможность выполниться определенной серии команд (или одной команде). Если следом за набором команд по команде case не стоит команда break,
то, при соблюдении условия по этому значению будут также выполнены и все последующие команды из других case-блоков. На случай, если в ветках не будет ни одного совпадения значения с проверяемым условием, предусмотрена команда default. Эта команда не является обязательной, но она может пригодиться. Обратите внимание, на то, что после каждого case (значение)ставится двоеточие, а не фигурные скобки. И в самом деле, зачем нам фигурные скобки, если
и так подразумевается, что все команды от case до следующего case или до break - относятся к одному блоку.
Приведу пример:
<?php
switch ($y==0) {
case (1):
print 'Переменная $y равна 1';
break;
case (2):
print 'Переменная $y равна 2';
break;
case (3):
print 'Переменная $y равна 3';
break;
default:
print 'Этот блок необязателен, он нужен
лишь для того, чтобы задать выполнение по
умолчанию, в случае не совпадения ни с одним
из значений. после нее и break не нужен.';
}
?>
Отступы необязательны, я их делаю для удобочитаемости.
Этих case может быть сколь угодно много, лишь бы вы сами в них не запутались. Где применять - подумайте сами, я, например, рекомендовал бы в формировании админской части какого-нибудь движка для сайта. То есть в формировании меню и исполнения. Еще раз повторюсь. Команда break необязательна, она нужна лишь для того, чтобы показать, что при выполнении конкретного условия, все остальные ветки нужно пропустить, если же есть необходимость выполнять все остальные ветки, при совпадении любого значения
внутри switch, то break не нужен. Допустим, если вы занимаетесь каким-то накоплением информации, и построили этот переключатель таким образом, что он по любому записывает значения во что-нибудь, и вам надо, чтобы что-то просто пропускалось в случае совпадения условия. Но чаще всего он используется именно как переключатель, а не накопитель по условию.
И последняя конструкция ветвления, которая позволяет сделать выбор из двух вариантов. Иногда она может очень пригодиться и облегчить жизнь.
Вот как она выглядит:
<?php
$data=($y)?"Три":"Два";
}
?>
Здесь мы проверяем значение переменной $y. В нашем случае мы проверяем его на истинность, но можно проверять и конкретное значение. Если переменная $y будет истинна, то переменной $data будет присвоено значение "Три", а если значение $y ложно, то $data получит значение "Два".
Ну с этой конструкцией сложностей у вас не должно возникнуть.
Закончим на сегодня этот урок. В следующем уроке расскажу о циклах. Это тоже управляющие конструкции.
Внимание!!!
Все материалы уроков, публикуемых в этом и во всех последующих выпусках рассылки «Программирование в Web», являются интеллектуальной собственностью авторов и ведущих рассылки. По всем вопросам размещения или публикации данных материалов на собственных ресурсах или где-либо еще, или иного использования, не связанного с личным ознакомлением и самостоятельным обучением, - обращайтесь на адрес автора.
Любое использование этих материалов в коммерческих или иных целях, явно не разрешенное автором, является незаконным.