Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка PHP 2008.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Тема 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 оперирует не исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть «видны» из тела цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз – до начала цикла, а затем работа будет производиться с копией возвращенного значения).