Учебное пособие 889
.pdfГруппа инструкций else является необязательной и необходима только в том случае, если требуется выполнить действие, отличающееся от продолжения скрипта, когда условное выражение равно FALSE. Также можно создавать вложенные инструкции if /else при помощи elseif, например:
if (условное выражение) {
инструкции, выполняемые, если условие равно TRUE;
}
elseif (второе условное выражение) {
инструкции, выполняемые, если второе условие равно
TRUE;
}
else {
инструкции, выполняемые, если второе условие равно
FALSE;
}
Во всех случаях результатом условного выражения должно быть булево значение TRUE или FALSE (1 или 0). Если при этом существует переменная, содержащая значение, отличное от NULL, FALSE или 0, такая переменная равна TRUE.
Многие условные выражения являются сравнениями, которые проверяют, равны ли два элемента или один из них больше другого. Следует помнить, что при проверке равенства в РНР необходимо использовать удвоенный знак равенства (==), а не единичный знак, который означает присвоение.
Инструкции while и do-white
Инструкции while и do-while являются конструкциями для организации циклов, позволяющими повторно выполнять часть кода до того момента, когда условное выражение перестанет быть равным TRUE.
Инструкция while, являющаяся основой этого набора, принимает следующие формы:
9
while (условное выражение) (
инструкции, выполняемые, пока условие равно
TRUE;
}
while (условное выражение) :
инструкции, выполняемые, пока условие равно
TRUE;
endwhile;
Инструкция do-while похожа на инструкцию while, только условное выражение расположено не в начале, а в конце данной инструкции. Инструкция do-while принимает следующую форму:
do {
инструкции, выполняемые, пока условие равно TRUE;
}
while (условное выражение);
Инструкция for
Инструкция for, схожая со своими аналогами в других языках, размещает инициализацию счетчика, ограничивающее условие и приращение счетчика в виде последовательности выражений сразу за ключевым словом for. Данная инструкция может принимать одну из следующих форм:
for (инициализация; условное выражение; выражение приращения)
{
инструкции, выполняемые, пока условие равно TRUE;
}
for (инициализация; условное выражение; выражение приращения):
10
инструкции, выполняемые, пока условие равно TRUE; endfor;
В своей основной форме выражение for может быть записано, например, таким образом: for ($i = 1; $i <= 5; $i++), где $i++увеличивает $i после выполнения.
Инструкция switch
Инструкция switch напоминает последовательность инструкций if/else. Эта инструкция используется при необходимости сравнить значение переменной с некоторым набором различных значений и в зависимости от результата сравнения выполнить какое-либо действие. Совместно с инструкцией switch используется три ключевых слова: case, break и default, принимая следующую форму:
switch ($переменная) { case 1:
инструкции, выполняемые, пока TRUE; break;
case 2:
инструкции, выполняемые, пока TRUE; break;
case 3:
инструкции, выполняемые, пока TRUE; break;
default:
инструкции, выполняемые, пока все FALSE;
}
Каждое выражение case в инструкции switch сравнивает значение переменной switch со значением case, которое может быть строкой. Если значения равны, выполняются инструкции после соответствующего выражения case, после чего выражение break направляет выполнение скрипта на первую инструк-
11
цию после закрывающей фигурной скобки инструкции switch. Если ни одно из выражений case не было удачным, выполняются инструкции, следующие за выражением default, после чего выполнение скрипта выходит из инструкции switch.
Массив
Одной из особенностей PHP является то, что часть массивов может использовать в качестве ссылок числовые индексы, другая позволяет работать с буквенно-цифровыми индикаторами.
Массив с числовыми индексами может быть задан следующим образом:
<?php
$paper[] = “Copier”; $paper[] = “Inkjet”; $paper[] = “Laser”; $paper[] = “Photo”;
?>
В данном случае при каждом присваивании массиву $paper значения для хранения последнего используется первое же свободное место, а значение существующего в PHP внутреннего указателя увеличивается на единицу, чтобы указывать на свободное место, готовое для следующей вставки значения.
Можно, как и в более традиционных языках программирования, указывать конкретное место элементов в массиве.
<?php
$paper[0] = “Copier”; $paper[1] = “Inkjet”; $paper[2] = “Laser”; $paper[3] = “Photo”;
?>
12
С помощью цикла можно вывести добавленные элементы на экран.
<?php
$paper[] = “Copier”; $paper[] = “Inkjet”; $paper[] = “Laser”; $paper[] = “Photo”;
for ($j = 0; $j < 4; $j++)
echo “$j: $paper[$j]<br>”;
?>
Многомерные массивы
Как и во многих других языках программирования в PHP можно создать многомерный массив. Многомерный массив в PHP может быть как обычным, так и ассоциативным.
Обычный многомерный массив задается следующим образом:
<?php
$mas = array(
array (7, 15, 34, 12), array (7, 4, 10, 23), array (78, 56, 34, 12));
echo “<pre>”;
foreach ($mas as $row)
{
foreach ($row as $num) echo “$num ”;
echo “<br>”;
}
echo “</pre>”;
?>
13
Можно вывести отдельный элемент массива на экран указав номер строки и столбца.
echo $mas[1][2];
Вэтом примере для последовательного перебора массива
идемонстрации его содержимого используется пара вложен-
ных циклов foreach… as. Внешний цикл обрабатывает каждую строку и помещает ее в переменную $row, которая сама по себе является массивом. Внутренний цикл обрабатывает каждый элемент в строке, выводя его на экран. За каждым элементом следует пробел. Тег <pre> обеспечивает правильную форму выводимого текста.
Функции для работы с массивами print_r()
Данная функция выводит на экран все элементы массива в удобочитаемом виде (индекс => значение). Например:
<?php
$mas = array(1,2,3,4,5); print_r($mas);
?>
На экран будет выведено следующее:
Array
(
[0]=> 1
[1]=> 2
[2]=> 3
[3]=> 4
[4]=> 5
)
14
is_array()
Данная функция определяет, является ли переменная массивом. Например:
echo (is_array($mas)) ? “Это массив” : “Это не массив”;
Возвращаемое переменной значение является логическим (TRUE если она является массивом, FALSE – если нет).
count()
Данная функция возвращает количество элементов в мас-
сиве:
echo count($mas);
Для многомерных массивов в функции рекомендуется указывать дополнительный параметр:
echo count($matr, 1);
Данный параметр имеет два значения: 1 – если требуется вернуть общее количество элементов и 0 – если требуется вернуть количество элементов верхнего уровня (строк).
sort() и rsort()
Сортировка массивов по возрастанию или убыванию является настолько часто применяемой процедурой, что в PHP создан ряд специальных функций для сортировки массивов.
Функция sort() сортирует элементы в массиве в порядке возрастания:
sort($mas, SORT_NUMERIC); sort($mas, SORT_STRING);
15
Кроме имени массива в функции устанавливаются флаги сортировки. Наиболее распространенными вариантами являют-
ся SORT_NUMERIC и SORT_STRING – числовая и строковая сортировки, соответственно.
Массив также можно отсортировать в обратном порядке, используя функцию rsort():
rsort($mas, SORT_NUMERIC); rsort($mas, SORT_STRING);
shuffle()
Данная функция перемешивает элементы массива в случайном порядке:
shuffle($mas);
explode()
Данная функция позволяет взять строку, содержащую несколько слов, разделенных пробелом (либо каким-то другим символом или группой символов), и поместить каждое из слов в отдельный элемент массива.
Например:
<?php
$temp = explode(‘ ’, “Это предложение из пяти слов”); print_r($temp);
?>
На экран будет выведено следующее:
Array
(
[0]=> Это
[1]=> предложение
[2]=> из
[3]=> пяти
16
[4] => слов
)
Первый параметр – разделитель – не обязательно должен быть пробелом или даже одиночным символом.
reset() и end()
Данные функции позволяют управлять внутренним указателем на элементы массив, определяющим какой элемент массива в данный момент является текущим. Функция reset() перемещает указатель на первый элемент массива, функция end()
– на последний элемент массива:
reset($mas); end($mas);
Математические функции PHP
В PHP существует ряд математических функций, позволяющих осуществлять вычисления. Основные из них приведены в табл. 2.
Таблица 2
|
Математические функции PHP |
|
|
Функция |
Назначение |
abs |
Модуль числа |
acos |
Арккосинус |
acosh |
Гиперболический арккосинус |
asin |
Арксинус |
asinh |
Гиперболический арксинус |
atan |
Арктангенс |
atanh |
Гиперболический арктангенс |
ceil |
Округляет дробь в большую сторону |
cos |
Косинус |
|
|
cosh |
Гиперболический косинус |
|
17 |
|
Продолжение табл. 2 |
deg2rad |
Преобразует значение из градусов в радианы |
exp |
Вычисляет степень числа e |
floor |
Округляет дробь в меньшую сторону |
fmod |
Возвращает дробный остаток от деления по |
|
модулю |
getrandmax |
Возвращает максимально возможное случай- |
|
ное число |
is_nan |
Проверяет, является ли значение "не числом" |
log10 |
Десятичный логарифм |
log |
Натуральный логарифм |
max |
Возвращает наибольшее значение |
min |
Находит наименьшее значение |
pi |
Возвращает значение числа pi |
pow |
Возведение в степень |
rad2deg |
Преобразует значение из радианов в градусы |
rand |
Генерирует случайное число |
round |
Округляет число типа float |
sin |
Синус |
sinh |
Гиперболический синус |
sqrt |
Квадратный корень |
srand |
Изменяет начальное число генератора псев- |
|
дослучайных чисел |
|
|
tan |
Тангенс |
|
|
tanh |
Гиперболический тангенс |
1.3. Задания на лабораторную работу № 10
Задание № 1. Установить и настроить пакет Denwer (желательно установить Denwer на флэш-накопителе – см. инструкцию прилагаемую в отдельном файле).
Протестировать работу веб-сервера, создав и открыв в браузере php-документ, содержащий следующие строки:
18