- •Разработка web – приложений на php
- •1. Цель работы 8
- •1. Цель работы 12
- •1. Цель работы 18
- •1. Цель работы 26
- •Введение
- •Переменные
- •Константы
- •Использование операций: вычисление итога по форме
- •Закрытие файла.
- •Закрытие файла.
- •Открытие файла
- •Запись в файл
- •Форматы файлов
- •Закрытие файла
- •Считывание из файла
- •Другие полезные файловые функции
- •Численно индексированные массивы
- •Ассоциативные массивы
- •Многомерные массивы
- •Сортировка массивов
- •Сортировка в обратном порядке
- •Сортировка многомерных массивов
- •Изменение порядка следования элементов в массивах
- •Загрузка массивов из файлов
- •Форматирование строк
- •Форматирование строк для представления
- •Объединение и разделение строк с помощью строковых функций
- •Сравнение строк
- •Сопоставление и замена подстрок с помощью строковых функций
- •Поиск строк в строках
- •Определение позиции подстроки
- •Замена подстрок
- •Задание
- •Контрольные вопросы
Изменение порядка следования элементов в массивах
В некоторых приложениях может потребоваться манипулирование порядком следования элементов массива другими способами. Функция shuffle() располагает элементы массива в случайном порядке. Функция array_reverse() возвращает копию массива, в которой все элементы располагаются в обратном порядке.
Использование функции shuffle()
Рассмотрим пример. Компания поставляет большую номенклатуру товаров, и хотела бы, чтобы три произвольно выбранных товара отображались на титульной странице. Этой цели легко достичь, если информация о всех товарах хранится в массиве. Программа будет отображать на экране три произвольно выбранных рисунка, сортируя элементы массива в произвольном порядке, а затем отображая первые три из них.
<?
$pictures = array (“tire.jpg”, “oil.jpg”, “spark_plug.jpg”,
“door.jpg”, “thermostat.jpg”, ...);
$shuffle($pictures);
?>
<html>
<head>
<title>Bob's Auto Parts - Customer Orders</title>
</head>
<body>
<center>
<h1>Bob's Auto Parts</h1>
<table width = 100%>
<tr>
<?
for ( $i = 0; $i < 3; $i++ )
{
echo “<td align = center><img scr=\””;
echo “\” width = 100 height = 100></td>”;
}
</tr>
</table>
</center>
</body>
</html>
Использование функции array_reverse()
Пример
$numbers = range(1,10);
$numbers = array_reverse($numbers);
Функция range() создает возрастающую последовательность.
Загрузка массивов из файлов
Ранее мы говорили о том, как осуществляется загрузка данных из файла. Однако можно сделать вывод более привлекательным, используя массивы.
Например, каждый раздел строк заказа можно было бы загрузить в отдельный элемент массива, чтобы разделы можно было обрабатывать по отдельности. Именно это делает следующий сценарий:
<html>
<head>
<title>Bob's Auto Parts - Customer Orders</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Customer Orders</h2>
<?
$orders= file("../../orders/orders.txt");
$number_of_orders = count($orders);
if ($number_of_orders == 0)
{
echo "<p><strong>No orders pending."
."Please try again later.</strong></p>";
}
echo "<table border=1>\n";
echo "<tr><th bgcolor = \"#CCCCFF\">Order Date</td>
<th bgcolor = \"#CCCCFF\">Tyres</td>
<th bgcolor = \"#CCCCFF\">Oil</td>
<th bgcolor = \"#CCCCFF\">Spark Plugs</td>
<th bgcolor = \"#CCCCFF\">Total</td>
<th bgcolor = \"#CCCCFF\">Address</td>
<tr>";
for ($i=0; $i<$number_of_orders; $i++)
{
//разбиение каждой строки
$line = explode( "\t", $orders[$i] );
// сохранение только количества заказанных товаров
$line[1] = intval( $line[1] );
$line[2] = intval( $line[2] );
$line[3] = intval( $line[3] );
// вывод каждого заказа
echo "<tr><td>$line[0]</td>
<td align = right>$line[1]</td>
<td align = right>$line[2]</td>
<td align = right>$line[3]</td>
<td align = right>$line[4]</td>
<td>$line[5]</td>
</tr>";
}
echo "</table>";
?>
</body>
</html>
В этом сценарии используется функция count() для выяснения количества элементов в массиве. Функция explode() используется для разбиения каждой строки, чтобы перед выводом ее можно было подвергнуть определенной обработке и форматированию. Она имеет следующий прототип:
array explode(string разделитель, string строка);
При сохранении данных в качестве разделителя использовался символ табуляции (\t). В результате переданная строка разбивается на части (“15:42, 20th April\t4 tires\t1 oil\t6 spark plugs\t$432.00\t22 Short St, Smalltown”).
В данном случае объем обработки не очень велик. Вместо того чтобы в каждой строке выводить название товара (покрышки, масло и свечи), в ней отображается только заказанное количество каждого из них, а таблица снабжается строкой заголовка. Существует ряд способов возможного извлечения чисел из этих строк. В рассмотренном примере использовалась функция intval(). Преобразование выполняется достаточно разумно и будет игнорировать фрагменты строки, которые не могут быть преобразованы в integer.
Задание
Используя массивы, внесите изменения в разработанный код для упрощения действий по работе с файлами.
Контрольные вопросы
Что такое массив?
Что представляют собой ассоциативные массивы?
Приведите пример сортировки массивов?
Лабораторная работа №5
Строки
Цель работы
Цель работы – научиться использовать строковые функции для форматирования и манипулирования текстом.
Использование строковых функций
Рассмотрим использование строковых функций PHP для форматирования и манипулирования текстом, поиска и замены слов, выражений.
Создадим новое приложение Smart Form Mail. Новые созданные сценарии будут добавлены к сайту компании, о которых мы говорили ранее.
Создадим форму отзывов клиентов, позволяющую клиентам вводить свои пожелания и замечания. Данное приложение будет обладать преимуществом по сравнению со многими другими формами, которые можно встретить в Web. Вместо того, чтобы отправлять форму по обобщенному адресу электронной почты процессу будет придана некоторая интеллектуальность за счет поиска и вводимых данных ключевых слов и выражений и последующей отправке сообщения электронной почты соответствующему сотруднику компании. Например, если сообщение будет содержать слово реклама, то оно будет отправлено в отдел маркетинга и т.д.
Первоначально рассмотрим простой сценарий, дополняя его по мере изучения материала.
<?
$toaddress = "feedback@bobsdomain.com";
$subject = "Feedback from web site";
$mailcontent = "Customer name: ".$name."\n"
."Customer email: ".$email."\n"
."Customer comments: \n".$feedback."\n";
$fromaddress = "webserver@bobsdomain.com";
mail($toaddress, $subject, $mailcontent, $fromaddress);
?>
<html>
<head>
<title>Bob's Auto Parts - Feedback Submitted</title>
</head>
<body>
<h1>Feedback submitted</h1>
<p>Your feedback has been sent.</p>
</body>
</html>
Поля данной формы объедены, а PHP – функция mail() применяется для отправки их по электронной почте по адресу feedback@bobsdomain.com. Прототип данной функции выглядит следующим образом:
bool mail(string кому, string тема, string сообщение,
string [дополнительные_заголовки]);
Четвертый параметр может использоваться для отправки любых дополнительных допустимых заголовков сообщения электронной почты. В данном примере четвертый параметр был использован для включения в сообщение адреса “From:” (От). Его можно также применять для добавления такого поля, как “Reply-To” (Ответить).
