Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка(ОВП).doc
Скачиваний:
1
Добавлен:
19.11.2019
Размер:
291.33 Кб
Скачать
    1. Изменение порядка следования элементов в массивах

В некоторых приложениях может потребоваться манипулирование порядком следования элементов массива другими способами. Функция 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() создает возрастающую последовательность.

    1. Загрузка массивов из файлов

Ранее мы говорили о том, как осуществляется загрузка данных из файла. Однако можно сделать вывод более привлекательным, используя массивы.

Например, каждый раздел строк заказа можно было бы загрузить в отдельный элемент массива, чтобы разделы можно было обрабатывать по отдельности. Именно это делает следующий сценарий:

<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.

  1. Задание

Используя массивы, внесите изменения в разработанный код для упрощения действий по работе с файлами.

  1. Контрольные вопросы

Что такое массив?

Что представляют собой ассоциативные массивы?

Приведите пример сортировки массивов?

Лабораторная работа №5

Строки

  1. Цель работы

Цель работы – научиться использовать строковые функции для форматирования и манипулирования текстом.

  1. Использование строковых функций

Рассмотрим использование строковых функций 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” (Ответить).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]