- •Тема 1 Основы cgi-программирования
- •1.1 Методы передачи данных
- •1.2 Передача документа пользователю
- •1.3 Передача информации cgi-сценарию
- •Тема 2 Характеристика языка php
- •2.1 Принцип работы php
- •2.2 Переменные, константы, выражения
- •Тема 3 Работа с данными формы
- •3.1 Передача данных
- •3.2 Трансляция полей формы в переменные
- •Тема 4 Конструкции языка
- •4.1 Условные инструкции
- •4.2 Инструкции циклов
- •4.3 Инструкции включения
- •Тема 5 Ассоциативные массивы
- •5.1 Списки и ассоциативные массивы
- •5.2 Операции над массивами
- •5.3 Списки и строки
- •5.4 Сериализация
- •Тема 6 Работа с массивами
- •6.1 Сортировка массивов
- •6.2 Функции для работы с массивами
- •Тема 7 Функции и области видимости
- •7.1 Формат определения функции, передача параметров
- •7.2 Глобальные, локальные, статические переменные
- •7.3 Рекурсия, вложенные и условно-определяемые функции
- •7.4 Передача функций по ссылке и возврат функцией ссылки
- •Тема 8 Строковые функции
- •8.1 Функции работы со строками
- •8.2 Работа с блоками текста
- •Тема 9 Математические функции
- •9.1 Встроенные константы
- •9.2 Встроенные функции
- •Тема 10 Работа с файлами и каталогами,
- •10.1 Функции работы с файлами
- •10.2 Блокирование файла
- •10.3 Функции работы с каталогами
- •10.4 Запуск внешних программ
- •Тема 11 Работа с датами и временем,
- •11.1 Представление времени в формате timestamp
- •11.2 Работа с датами, григорианский календарь
- •11.3 Посылка писем через php
- •Тема 12 Работа с www
- •12.1 Установка заголовков ответа
- •12.2 Работа с Cookies
- •Тема 13 Управление интерпретатором
- •13.1 Управление интерпретатором
- •13.2 Управление сессиями
- •Тема 14 Работа с базой данных mysql
- •14.1 Соединение с базой данных
- •14.2 Выполнение запросов к базе данных
- •Тема 15 Загрузка файлов на сервер
- •15.1 Multipart-формы, тег выбора файла
- •15.2 Поддержка закачки в php
- •Учебное издание
- •Разработка программного обеспечения на платформе net: php.Net
- •246019 Г. Гомель, ул. Советская, 104
Тема 4 Конструкции языка
4.1 Условные инструкции
4.2 Инструкции циклов
4.3 Инструкции включения
4.1 Условные инструкции
О терминологии. Термины «конструкция» и «инструкция» совершенно эквивалентны. Термины «оператор» и «операция» несут разную смысловую нагрузку: любая операция есть оператор, но не наоборот. Например, echo – оператор, но не операция, а ++ – операция.
Инструкция if–else.
Формат |
Альтернативный синтаксис |
if (условие) инструкция_1; else инструкция_2; |
if (условие1): команды; elseif (условие2): другие__команды; else: иначе_команды; endif |
Конструкция else может опускаться.
if ($a>=l&&$b<=10) echo "Все ОК";
else echo "Неверное значение в переменной!";
Если инструкция_1 или инструкция_2 должны состоять из нескольких команд, то они, заключаются в фигурные скобки:
if ($a>$b) { print "а больше b"; c=$b; }
else if {$а==$b) { print "а равно b"; $c=$a; }
else { print "а меньше с"; $с=$а; }
Замечание: elseif пишется слитно! Обратите внимание на расположение двоеточия (:)! Если его пропустить, будет сгенерировано сообщение об ошибке. Блоки elseif и else можно опускать.
Использование альтернативного синтаксиса. Для того чтобы вставить HTML-код в тело сценария, достаточно просто закрыть скобку ?>, написать этот код, а затем снова открыть ее при помощи <?, и продолжать программу.
Чаще всего, однако, нужно бывает делать не вставки HTML внутрь программы, а вставки кода внутрь HTML. Поэтому целесообразно бывает отделять HTML-код от программы, например, поместить его в отдельный файл, который затем подключается к программе при помощи инструкции include.
Пример сценария с использованием альтернативного синтаксиса if-else:
<?if(@$go):?>
Привет, <?=$name?>!
<?else:?>
<form action=<?=$REQUEST_URL?> method=post>
Ваше имя: <input type=text name=name><br>
<input type=submit name=go value="Отослать!">
<?endif?>
Конструкция switch-case.
Формат |
Альтернативный синтаксис |
switch (выражение) { case значение1: команды1; [break;] case значение2: команды2; [break;] … case значениеN: командыN; [break;] [default: команды_по_умолчанию; [break]] } |
switch (выражение): case значение1: команды1; [break;] case значение2: команды2; [break;] … case значениеN: командыN; [break;] [default: команды_по_умолчанию; [break]] endswitch; |
4.2 Инструкции циклов
Цикл с предусловием while.
Формат |
Альтернативный синтаксис |
while (условие) инструкция;
|
while (условие): команды; endwhile; |
Цикл с постусловием do-while.
do
{ команды; }
while (логическое_выражение);
Альтернативного синтаксиса для do-while нет.
Универсальный цикл for.
Формат |
Альтернативный синтаксис |
for (инициализирующие_команды; условие_цикла; команды_после_прохода) тело_цикла; |
for (инициализируюшие__команды; условие_цикла; команды_после_прохода): операторы; endfor; |
Инструкции break и continue. Инструкция break осуществляет немедленный выход из цикла. Она может задаваться с одним необязательным параметром – числом, которое указывает, из какого вложенного цикла должен быть произведен выход. По умолчанию используется 1, т. е. выход из текущего цикла, но иногда применяются и другие значения:
for ($i=0; $i<10; $i++)
{
for($j=0; $j<10; $j++)
If($A[$i]==$A[$j]) break(2);
}
If ($i<10)
echo "Есть совпадающие элементы в матрице А!";
В этом примере инструкция break осуществляет выход не только из второго, но и из первого цикла, поскольку указана с параметром 2.
Инструкция continue так же, как и break, работает только «в паре» с циклическими конструкциями. Она немедленно завершает текущую итерацию цикла и переходит к новой. Так же, как и для break, для continue можно указать уровень вложенности цикла, который будет продолжен по возврату управления.
Цикл foreach. Данный тип цикла предназначен специально для перебора всех элементов ассоциативного массива. Формат:
foreach (массив as $key=>$value)
команды;
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значение оказывается в переменных $key и $value.
У цикла foreach имеется и другая форма записи, которую следует применять, когда нас не интересует значение ключа очередного элемента. Выглядит она так:
foreach (массив as $value)
команды;
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Такой цикл применяется для работы с массивами-списками.
Цикл foreach оперирует не исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть «видны» из тела цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз – до начала цикла, а затем работа будет производиться с копией возвращенного значения).
