Обозначение
|
Название
|
Пример
|
+
|
Сложения
|
$а
+ $b
|
-
|
Вычитание
|
$а
- $b
|
*
|
Умножение
|
$a*$b
|
/
|
Деление
|
$а
/ $b
|
%
|
Остаток
от деления
|
$а
% $b
|
•
|
Конкатенация
(сложение строк)
|
$с
= $а.$b
|
Таблица 2 - Операторы присваивания
Обозначение
|
Описание
|
Пример
|
=
|
Переменной
слева от оператора будет присвоено значение, полученное в результате
выполнения каких-либо операций с правой стороны
|
$а
=($b = 4) +5; ($а будет равна 9, $b четырем)
|
+=
|
Прибавляет
к переменной число и затем присваивает ей полученное значение
|
$а
+= 5; ( то же, что и $а = $а + 5;)
|
.=
|
Сокращенно
обозначает комбинацию операций конкатенации и присваивания (сначала
добавляется строка, потом полученная строка записывается в переменную)
|
$b
= "Привет"; $b.= "всем"; В результате: $b="Привет
всем"
|
Таблица 3 - Логические операторы
Обозначение
|
Название
|
Пример
|
Описание
|
аnd
&&
|
И
|
$а
and $b $а && $b
|
$а
и $b истинны (True)
|
оr
||
|
Или
|
$а
or $b $а || $b
|
Хотя
бы одна из переменных $а или $b истинна (возможно, что и обе)
|
хоr
|
Исключающее
или
|
$а
хоr $b
|
Только
одна из переменных истинна.
|
!
|
Инверсия
(NOT)
|
!$а
|
Если
$а=Тruе, то !$a=False и наоборот
|
Таблица 4 - Операторы сравнения
Обозначение
|
Название
|
Пример
|
Описание
|
Равенство
|
$а
== $b
|
Значения
переменных равны
|
===
|
Эквивалентность
|
$а
=== $b
|
Равны
значения и типы переменных
|
!=,
<>
|
Неравенство
|
$а
!= $b, $а <>$b
|
Значения
переменных не равны
|
!==
|
Неэквивалентность
|
$а
!= = $b
|
Переменные
не эквивалентны
|
<
|
Меньше
|
$а<$b
|
|
>
|
Больше
|
$а>$b
|
|
<=
|
Меньше
или равно
|
$а
<= $b
|
|
>=
|
Больше
или равно
|
$а
>= $b
|
|
Таблица 6 - Операторы инкремента и декремента
Обозначение
|
Название
|
Описание
|
Пример
|
++$а
|
Пре-инкремент
|
Увеличивает
$а на единицу и возвращает $а
|
<?
$а=4; echo "Должно быть 5:" .++$а; echo "Должно быть 5:"
.$а++; echo "Должно быть 6:" .$а; echo "Должно быть 5:"
.--$а; echo "Должно быть 5:" .$а--; echo "Должно быть 4:"
.$а; ?>
|
$а++
|
Пост-инкремент
|
Возвращает
$а, затем увеличивает $а на единицу
|
|
--$а
|
Пре-декремент
|
Уменьшает
$а на единицу и возвращает $а
|
|
$а--
|
Пост-декремент
|
Возвращает
$а, затем уменьшает $а на единицу
|
|
1.4 Типы данных
РНР поддерживает восемь простых типов данных.
Четыре скалярных типа:(логический). Этот простейший тип выражает истинность
значения, т.е. переменная этого типа может иметь только два значения - истина
TRUE или ложь FALSE;(целый). Этот тип задает число из множества целых чисел.
Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной
системе счисления, по желанию с предшествующим знаком «-» или «+». Если
используется восьмеричная система счисления, нужно предварить число 0 (нулем),
для использования шестнадцатеричной системы нужно поставить перед числом 0х;(с
плавающей точкой);(строковый). Строка - это набор символов. В РНР символ - это
то же самое, что байт, это значит, что существует ровно 256 различных символов.
Строка в РНР может быть определена с помощью одинарных или двойных кавычек.
Самым важным свойством строк в двойных кавычках является обработка переменных.
Два смешанных типа:
• array (массив);
• object (объект).
И два специальных типа:
• resource (ресурс);
• NULL.
В РНР не принято явное объявление типов
переменных.
1.4.1 Тип array (массив)
Массив в РНР представляет собой упорядоченную
карту - тип, который преобразует значения в ключи. Определить массив можно с
помощью конструкции array() или непосредственно задавая значения его элементам.
Определение при помощи array()([key] =>
value, [keyl] => valuel, ... )
Языковая конструкция array () принимает в
качестве параметров пары ключ => значение, разделенные запятыми. Символ
=> устанавливает соответствие между значением и его ключом. Ключ может быть
как целым числом, так и строкой, а значение может быть любого имеющегося в РНР
типа. Числовой ключ массива часто называют индексом. Индексирование массива в
РНР начинается с нуля. Значение элемента массива можно получить, указав после
имени массива в квадратных скобках ключ
Если для элемента ключ не задан, то в качестве
ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать
ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано.
Если максимальный ключ - отрицательное число, то следующим ключом массива будет
ноль (0).
<?php // массивы $аrr и $arr1 эквиваленты
$аrr
= аrrау(5
=> 43, 32, 56, "b" => 12);
$arr1 = array(5 => 43, 6 =>
32, 7 => 56, "b" => 12);
?>
Для работы с массивами можно применять следующие
функции:
Таблица 7 - Функции работы с массивами
Название
|
Обозначение
|
Пример
|
range
|
Заполняет
список целыми числами
|
array_reverse
|
Расстановка
элементов массива в обратном порядке
|
$arr = array_reverse($arr); // теперь
$arr = array(9, 8, 7, 6, 5, 4);
|
shuffle
|
Перемешивание
элементов массива
|
shuffle($A);
/* теперь в массиве arr числа 4,5,6,7,8,9 в случайном порядке*/
|
sort
|
Сортировка
массива по возрастанию
|
$A = array("One", "Two",
"Tree", "Four"); sort($A); // выводит
"0:Four 1:One 2: Tree 3: Two "
|
rsort
|
Сортировка
массива по убыванию
|
asort($A); // выводит
" 0:Two 1:Tree 2:One 3:Four "
|
asort
|
Сортировка
ассоциативного массива по возрастанию
|
$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");
asort($A); //c=>Alpha d=>Processor b=>Weapon a=>Zero
|
arsort
|
Сортировка
ассоциативного массива по убыванию
|
arsort($А);
// a=>Zero b=>Weapon d=>Processor c=>Alpha
|
ksort
|
Сортировка
массива по возрастанию ключей
|
ksort($A); // a=>Processor b=>Alpha
c=>Weapon d=>Zero
|
krsort
|
Сортировка
массива по убыванию индексов
|
krsort($A); // d=>Zero c=>Weapon
b=>Alpha a=>Processor
|
unset
|
удаляет
элемент массива
|
unset($arr[l]); //теперь
$arr = array(5, 6, 7, 8, 9);
|
reset
|
Производит
сброс курсора массива
|
Устанавливает
внутренний курсор массива на его начало и возвращает значение начального
элемента
|
end
|
Производит
перенос курсора в конец массива
|
Устанавливает
внутренний курсор массива на последний элемент и возвращает значение
начального элемента
|
next
|
Производит
перенос курсора вперед
|
Возвращает
значение элемента, на котором в данный момент находится курсор, и перемещает
курсор массива на следующий элемент
|
Название
|
Обозначение
|
Пример
|
prev
|
Производит
перенос курсора назад
|
Возвращает
значение элемента, на котором в данный момент находится курсор, и перемещает
курсор массива на предыдущий элемент
|
current
|
Определение
текущего элемента массива
|
Возвращает
значение элемента, на котором в данный момент находится курсор массива, при
этом не сдвигая курсор
|
key
|
Возвращает
индекс текущего элемента массива
|
|
array_keys
|
Возвращает
список из ключей массива
|
$arr = array(0 => 100, "color"
=> "red", 15); array_keys($arr); //возвратит
array(0, "color", 1)
|
array_values()
|
Переиндексирует
массив
|
|
Sizeof
count
|
Возвращает
число элементов массива
|
|
array_sum
|
Возвращает
сумму всех элементов массива
|
$arr = array(2,4,6,7); echo "Сумма:
".array_sum($arr); // Сумма:
19
|
array_slice
|
Получение
части массива
|
$input = array("a", "b",
"c", "d", "e"); $output = array_slice($input,
2); // "c", "d", "e" $output =
array_slice($input, 2, -1); // "c", "d" $output = array_slice($input,
0, 3);// "a", "b", "c"
|
array_search
in_array
|
Поиск
значения в массиве
|
If (in_array(“b”,$input)) echo “Да”;
$k= array_search(“b”,$input); // выведет
1
|
array_splice
|
Удаляет
часть массива
|
|
1.5 Условные операторы
.5.1 Оператор if
Этот оператор позволяет выполнять фрагменты кода
в зависимости от условия. Структуру оператора if можно представить следующим
образом:(выражение) блок_выполнения
Оператор else расширяет if на случай, если
проверяемое в if выражение является неверным, и позволяет выполнить какие-либо
действия при таких условиях. Структурa оператора if, расширенного с помощью
оператора else:(выражение) блок_выполнения else блок_выполнения1- это
комбинация else и if. Как и else, он расширяет if для выполнения различных
действий в том случае, если условие, проверяемое в if, неверно. Но в отличие от
else, альтернативные действия будут выполнены, только если elseif - условие
является верным. Структуру оператора if, расширенного с помощью операторов else
и elseif, можно представить следующим образом:
(выражение) блок_выполнения;(выражение1)
блок_выполнения1;
Пример
<?
$names =
array("Иван","Петр","Семен");($names[0]=="Иван")
{"Привет, Ваня!";
$num = 1;
}($num) echo "Иван первый в
списке!";($num > 100) echo "Эта строчка не появится на экране, так
как условие не выполнено";
?>
1.5.2 Оператор switch
В зависимости от того, какое значение имеет
переменная, он переключается между различными блоками действия. Структуру
switch можно записать следующим образом:
(выражение или переменная) {значение1:
блок_действий1;;значение2:
блок_действий2;;
…:
блок_действий_по_умолчанию;
}
Пример
<?
$names =
array("Иван","Петр","Семен");
switch ($names[0]){"Иван":"Привет,
Ваня!";
break;"Петр":"Привет,
Петя!";;"Семен":"Привет, Сеня!";
break;:"Привет,
$names[0]";
}
?>
}
1.6 Циклы
.6.1 Цикл с предусловием while
Структура:(выражение) { блок_выполнения }
Пример. Эта программа напечатает все четные
цифры:
<?
$i = 1;($i < 10) {($i % 2 == 0)
print $i; // печатаем цифру,
если
она
четная
$i++; // увеличиваем $i на единицу
}
?>
1.6.2 Цикл с постусловием do...
while
Структура:{блок_выполнения} while (выражение);
Пример.
<? // эта программа напечатает число 12,
несмотря
//на то что условие цикла не выполнено
$i = 12;{($i % 2 == 0) print $i; // если число
четное, то печатаем его
$i++; // увеличиваем число на единицу
} while ($i<10)
?>
1.6.3 Цикл со счетчиком for
Структура:(выражение1;выражение2;выражение3)
{блок_выполнения}
Все четные цифры можно вывести с использованием
цикла for таким образом:
<?php($i=0; $i<10; $i++) {($i
% 2 == 0) print $i; // печатаем
четные
числа
}
?>
1.6.4 Цикл перебора массива foreach
Синтаксис:
foreach ($array as $value) {блок_выполнения}
либо($array as
$key => $value) {блок_выполнения}
В первом случае формируется цикл по всем
элементам массива, заданного переменной $аггау. На каждом шаге цикла значение
текущего элемента массива записывается в переменную $value, и внутренний
счетчик массива передвигается на единицу (так что на следующем шаге будет виден
следующий элемент массива). Внутри блока_выполнения значение текущего элемента
массива может быть получено с помощью переменной $value. Выполнение
блока_выполнения происходит столько раз, сколько элементов в массиве $ array.
Вторая форма записи в дополнение к
перечисленному выше на каждом шаге цикла записывает ключ текущего элемента
массива в переменную $кеу, которую тоже можно использовать в блоке_выполнения.
Когда foreach начинает исполнение, внутренний указатель массива автоматически
устанавливается на первый элемент.
Пример.
<?php
$names = array("Иван","Петр","Семен");($names
as $val) { // выведет всем приветствие"Привет, $val <br>";
}
foreach ($names as $k => $val) {
// кроме приветствия, выведем номера в списке,
т.е. ключи"Привет, $val ! Ты в списке под номером $k <br>";
}
?>
1.7 Операторы передачи управления
Оператор break заканчивает выполнение текущего
цикла, будь то for, foreach, while, do...while или switch. Break может
использоваться с числовым аргументом, который говорит, работу скольких
управляющих структур, содержащих его, нужно завершить.
Оператор continue позволяет пропустить
дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение
с нового круга. Continue можно использовать с числовым аргументом, который
указывает, сколько содержащих его управляющих конструкций должны завершить
работу.
1.8 Операторы включения
Оператор include позволяет включать код,
содержащийся в указанном файле, и выполнять его столько раз, сколько программа
встречает этот оператор. Включение может производиться любым из перечисленных
способов:'имя_файла'; или include $file_name; или include
("имя_файла") ;также позволяет включать в программу и исполнять
какой-либо файл. Основное отличие require и include заключается в том, как они
реагируют на возникновение ошибки. Include выдает предупреждение, и работа
скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта
и прекращает его выполнение.
1.9 Формы в HTML-документах
Формы предназначены для отправки информации
CGI-приложению, то есть нашему сценарию. Форма в HTML-документе реализуется
тегом-контейнером FORM, в котором задаются все управляющие элементы - поля
ввода, кнопки и т.д. Простая форма ввода имени:
<form
action="#"656159.files/image001.gif">
Измените страницу с формой так,
чтобы пользователь мог выбрать приветствие, нажав кнопку зависимой фиксации:
Привет Здравствуйте
Рад Вас
снова видеть Добрый день
Добавьте кнопку для очистки
введенных данных.
2.4 Создание формы для обработки заказов
электронного магазина
По разобранному примеру создания
книжного магазина разработать форму для работы следующих магазинов (по указанию
преподавателя):
Магазин автозапчастей
Мебельный магазин
Магазин продуктовый
Магазин игрушек
Магазин бытовой техники
Компьютерный магазин
Аптека
Магазин канцтоваров
Форму заказа для покупателей
(orderform.html) книжного магазина можно представить следующим образом:
<html>
<head>
<title>КНИЖНЫЙ МАГАЗИН</title>
</head>
<body>
<h1> КНИЖНЫЙ МАГАЗИН
</h1>
<h2>Форма заказа</h2>
<form
action="processorder.php" method=post>
<table
border=0>
<tr
bgcolor=#cccccc>
<td
>Название</td>
<td
>Количество</td>
</tr>
<tr>
<td> Сказки
Андерсона</td>
<td
align=center><input type="text" name="scazki" size=3
maxlength=3></td>
</tr>
<tr>
<td> Стихи А.С.Пушкина</td>
<td
align=center><input type="text" name="ctixi" size=3
maxlength=3></td>
</tr>
<tr>
<td> Журнал «Бизнес»
</td>
<td
align=center><input type="text" name="zurnal" size=3
maxlength=3></td>
</tr>
<tr>
<td
colspan=2 align=center><input type=submit value="Отправить заказ"></td>
</tr>
</table>
</form>
</body>
</html>
Для обработки формы можно создать
файл, аналогичный processorder.php:
<html>
<head>
<title>Книжный магазин -
Результаты заказа</title>
</head>
<body>
<h1> КНИЖНЫЙ МАГАЗИН
</h1>
<h2> РЕЗУЛЬТАТЫ ЗАКАЗА
</h2>
<?
$scazki=$_REQUEST[scazki];
$ctixi
=$_REQUEST[ctixi];
$zurnal
=$_REQUEST[zurnal];"<p>Заказ обработан
";date("H:i, jS F");
echo
"<br>";"<p>Ваш заказ
составил:";"<br>";$scazki." сказок Андерсона<br>";$ctixi."
Книг со стихами Пушкина<br>";
echo
$zurnal." журналов<br>";
$totalqty =
0;
$totalamount
= 0.00;("zena1", 100);("zena2", 10);("zena3", 4);
$totalqty =
$scazki + $ctixi + $zurnal;
$totalamount
= $scazki * zena1 + $ctixi * zena2 + $zurnal * zena3;
$totalamount
= number_format($totalamount, 2);"<br>\n";
echo "Всего заказано:
".$totalqty."<br>\n";
echo "На сумму:
".$totalamount."<br>\n";
$taxrate =
0.10; // Налог с продаж
10%
$totalamount
= $totalamount * (1 + $taxrate);
$totalamount
= number_format($totalamount, 2);" С налогом с продаж:
".$totalamount."<br>\n";
</body>
</html>
По аналогии придумайте и рассчитайте
скидки на заказ в зависимости от количества и/или суммы покупки. Добавить в
форму код, позволяющий получить информацию о том, какие формы рекламы лучше
работают или что-то по смыслу вашей работы. Например:
<td>Как вы нас
нашли</td>
<td><select
name="find">
<option value =
"a">Я регулярный покупатель
<option value =
"b">По телевизору
<option value =
"c">По телефонному справочнику
<option value =
"d">Знакомые рассказали
</select>
</td>
Обработайте полученную информацию в
файле processorder.php. Например:
switch($_REQUEST[find])
{"a":
echo "<P>Регулярный
покупатель.";;"b":"<P>Покупатель увидел рекламу о нас
по телевизору.";;"c":"<P> Покупатель нашел нас по
телефонному справочнику.";;"c":"<P>Покупатель узнал о
нас от знакомых.";;:"<P>Мы на знаем как нашел нас
покупатель.";;}
Добавьте в форму таблицу стоимости
доставки заказа в зависимости от расстояния:
<table
border = 0 cellpadding = 3>
<tr>
<td
bgcolor = "#CCCCCC" align = center>Расстояние</td>
<td
bgcolor = "#CCCCCC" align = center>Стоимость</td>
</tr>
<?
$distance =
50;($distance <= 250 ) {"<tr>\n <td align = right>$distance</td>\n";"
<td align = right>". $distance / 10
."</td>\n</tr>\n";
$distance += 50;
}
?>
</table>
</body>
</html>
Добавьте в форму заказа запрос адреса клиента,
заведите массив для хранения ближайших городов с расстояниями до них, вычислите
в файле processorder.php стоимость доставки заказа клиенту.
3. Требования к отчету
Отчет должен содержать:
название и цель работы;
сведения о последовательности её выполнения;
ответы на контрольные вопросы из п.4;
основные этапы работы и результаты их выполнения
в виде файла на дискете и отчета с текстами созданных программ.
4. Контрольные вопросы
Какие типы данных поддерживает РНР?
Какие бывают формы условного оператора?
Приведите их вид.
Назовите оператор выбора данных. Приведите его
общий вид.
Какова структура оператора цикла for? Как
выполняется цикл for?
Какова структура цикла с предусловием? Как
выполняется этот цикл?
Какова структура цикла с постусловием? Как
выполняется этот цикл?
Какой оператор цикла позволяет работать с
массивами в РНР?
Какие операторы передачи управления существуют в
РНР и чем они различаются?
Какие операторы включения существуют в РНР и чем
они различаются?
Какие типы управляющих элементов вы можете
назвать?
Какие функции выполняет тег FORM?
Способы использования тега INPUT.
Какие теги позволяют осуществить выбор данных?
Как ввести многострочный текст?
Как обработать данные, переданные с помощью
формы в РНР-сценарии?