
- •Язык php
- •Динамические сайты
- •Преимущества обработки страниц на стороне сервера
- •Современные технологии обработки страниц на стороне сервера
- •Active Server Pages (asp)
- •Java Servlets и jsp
- •Контрольные вопросы
- •Возможности языкаPhp ОбработкаHtmLформ
- •ГенерированиеHtmLстраниц
- •Взаимодействие с субд
- •Поддержка большого количества библиотек
- •Контрольные вопросы
- •Создание динамических страниц Создание простейшегоPhp-скрипта
- •Рнр и код, выполняемый на стороне клиента
- •Взаимодействие с пользователем
- •Контрольные вопросы
- •Синтаксис языкаPhp Типы данных
- •Константы
- •Объявление и инициализация переменных
- •Преобразование типов
- •Арифметические операторы
- •Унарный оператор
- •Оператор конкатенации строк
- •Сокращенная запись для присвоениязначений переменным
- •Операторы сравнения
- •Условные операторы
- •Функции пользователя
- •Массивы
- •Работа с файлами
- •Контрольные вопросы
- •Рнр иMySql Обработка и хранение структурированных данных
- •Динамические сайты, использующие базу данных
- •Построение реляционной базы данных
- •Продавцы
- •Заказчики
- •SqLзапросы к реляционной базе данных
- •Insert into salespeople values(1001,'Иванов','Москва',0.12);
- •Insert into customers values(2001,'Белкин','Москва',100,1001);
- •Insert into orders values(3008,4723.00,'2002-10-05',2006,1001);
- •Особенности реализацииMySql
- •ВзаимодействиеPhp иMySql
- •Контрольные вопросы
- •Разработка системы "Прайс-лист"
- •Постановка задачи
- •Принципы функционирования программного комплекса
- •Разработка структуры базы данных
- •Проектирование системы администрирования
- •Проектирование генератора прайс-листа
- •Контрольные вопросы
Условные операторы
Условные операторы позволяют определять блоки кода, которые выполняются только при осуществлении некоторых условий. В РНР есть две условные конструкции. Первая из них - это if ... elseif ... else, позволяющая проверить несколько выражений и выполнить операторы в соответствии со значениями этих выражений. Если нужно сравнить одно выражение с рядом значений, то РНР предоставляет конструкцию switch ... case, упрощающую эту операцию.
Оператор if является одним из важнейших операторов, позволяющих выполнять выбранные строки кода только при истинности некоторых заданных условий. Например:
//Canada будет выводиться, только если $country
//имеет значение са
if ($country == "са") echo "Canada";
Если при выполнении условия нужно выполнить несколько команд, то для обозначения строк, принадлежащих блоку if, используются фигурные скобки {}:
if ($country == "са") {
echo "Canada ";
echo "Mr. Ivanov";
}
Условия можно объединять с помощью логических операторов "и" (&&), "или" ( || ) :
if (($a < $b) && ($b > $c)) echo "Условия выполнены";
Если проверяемое условие имеет значение false, то оператор if позволяет указать блок инструкций, которые должны выполнены в случае ложности проверяемого условия. Этот блок инструкций должен располагаться после ключевого слова else. В случае, если блок состоит из нескольких инструкций, содержимое блока должно быть заключено в фигурные скобки {} (в случае, если блок состоит из одной инструкции, применение фигурных скобок не обязательно)
if ($h < 0) {
echo "Отрицательное число";
}
else {
echo "Положительное число";
}
В РНР есть ключевое слово elseif для проверки альтернативных условий, если условие if оказывается не выполненным. В операторе if можно использовать любое количество операторов elseif. Последняя ветвь else позволяет указать код, который нужно выполнить, если ни одно из условий if или elseif не оказалось истинным:
if ($h < 0) {
echo "Отрицательное число";
}
elseif ($h==0) {
echo "Ноль";
}
else {
echo "Положительное число";
}
В PHP помимо условного оператора if имеется оператор switch. Теоретически, любую условную конструкцию можно организовать при помощи оператора if, однако в некоторых случаях оператор switch позволяет создавать более компактные и удобочитаемые конструкции. Рассмотрим пример, демонстрирующий достоинства оператора switch.
Предположим, что у нас есть переменная, которая в результате работы программы принимает заранее определенные значения из некоторого, заранее определенного, диапазона. В качестве примера можно взять имена национальных доменных зон (Россия - "ru", Украина "ua", Германия "de" и т.д.). Допустим, что пользователь вводит название доменной зоны, а программа возвращает название страны, за которой закреплена данная зона. Можно воспользоваться описанными выше операторами if... elseif... else:
if ($country == "ca") {
echo "Канада";
}
elseif ($country == "ru") {
echo "Россия";
}
elseif ($country == "de") {
echo "Германия";
}
elseif ($country == "ua") {
echo "Украина";
}
else {
echo "Информация отсутствует";
}
В этом примере мы неоднократно проверяем значение $country, несмотря на то что оно не меняется от одной строки к другой. С помощью оператора switch можно значительно упростить процедуру многократной проверки.
switch ($country) {
case "ca":
echo "Канада";
break;
case "ru":
echo "Россия";
break;
case "de":
echo "Германия";
break;
case "ua":
echo "Украина";
break;
default:
echo "Информация отсутствует";
}
Оператор switch вычисляет значение $country и сравнивает его со всеми значениями в предложениях case. При обнаружении совпадения выполняются операторы, относящиеся к соответствующему блоку case, пока не будет обнаружен оператор. Если соответствие не обнаружено, выполняются операторы блока default. Наличие блока default не является обязательным.
Циклы
Цикл является средством, позволяющим выполнять некоторый блок кода заданное число раз или до тех пор, пока не будет выполнено некоторое условие. В РНР есть два типа циклов: while и for. Циклы while проверяют условие до или после каждого прохода цикла и повторяют цикл снова только в том случае, если условие истинно. Число итераций цикла for устанавливается перед первым проходом и не может быть изменено.
Начнем рассмотрение циклов используемых в PHP с цикла while. Его синтаксис похож на синтаксис оператора if:
while (условие) { блок операторов }
Цикл while вычисляет значение булева выражения. Если выражение равно false, то код внутри фигурных скобок пропускается. Если оно равно true, код в скобках выполняется. По достижении закрывающей скобки проверяемое выражение вычисляется заново, и если его значение true, код в цикле выполняется повторно. Это продолжается до тех пор, пока выполняется условие. Обратите внимание, что условие проверяется только в начале каждой итерации, поэтому если истинность выражения изменится посредине выполнения блока кода, код будет выполнен до конца. Чтобы прервать выполнение в более ранний момент, можно воспользоваться оператором break.
$i = 1;
while ($i<11) {
echo $i." ";
$i++;
}
В данном примере блок кода будет выполнен десять раз. На одиннадцатом проходе условие цикла перестанет быть истинным и работа цикла закончится. В результате работы программы будет выведена через пробел последовательность чисел от 1 до 10.
Цикл do ... while аналогичен циклу while, но проверка условия происходит не в начале, а в конце каждой итерации. Это означает, что цикл всегда выполняется хотя бы один раз.
$i = 1;
do {
echo $i." ";
$i++;
} while ($i<11);
Данный пример во многом аналогичен предыдущему. Единственное отличие заключается в том, что проверка условия выполнения цикла выполняется не перед проходом, а после.
Синтаксис цикла for несколько сложнее, но использовать цикл for в некоторых случаях более удобно, чем цикл while:
for ($i=1;$i<11;$i++) {
echo $i." ";
}
Оператор for содержит в своих скобках три выражения, разделяемые точкой с запятой. Первое выражение является оператором присваивания для переменной, являющейся счетчиком итераций (счетчиком цикла). Этот оператор выполняется только один раз перед первым проходом цикла. Второе выражение является булевым и вычисляется в начале каждой итерации. Если значение этого выражения true, происходит итерация. Если значение false, выполнение цикла завершается. Третьим является оператор, выполняемый в конце каждой итерации цикла. Обычно он используется для увеличения или уменьшения счетчика итераций. Результатом работы приведенной выше программы, как и в предыдущих примерах, будет последовательность чисел от 1 до 10, выведенных через пробел.