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

Операции для работы с массивами

Существует набор специальных операций, применимых только в отношении массивов. Большинство из них имеет скалярные аналоги.

Операция

Название

Пример

Результат

+

объединение

$a+$b

Массив $b добавляется к массиву $a, при этом элементы с конфликтующими ключами не добавляются

==

равно

$a == $b

Возвращает true, если массивы содержат одинаковые элементы

===

идентично

$a===$b

Возвращает true, если массивы содержат одинаковые элементы одинакового типа, расположенные в одинаковом порядке

!=

не равно

$a != $b

Возвращает true

<>

не равно

$a<>$b

То же, что и !=

!==

не идентично

$a!==$b

Возвращает true, если массивы не содержат одинаковые элементы одинакового типа, расположенные в одинаковом порядке

Операция объединения пытается добавить элементы массива $b в конец массива $a. Если ключи элементов в $b совпадают с ключами некоторых элементов в $a, такие элементы не добавляются. Таким образом, элементы массива $a не перезаписываются.

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

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

<html>

<head>

<title>Автозапчасти— Результаты заказа</title>

</head>

<body>

<h1>Автозапчасти </h1>

<h2>Список заказов</h2>

<?php

// создание короткого имени переменной

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

$orders = file("$DOCUMENT_ROOT/../orders/orders.txt");

$number_of_orders = count($orders);

if ($number_of_orders == 0) {

echo "<p><strong>Нет необработанных заказов.

Загляните позже.</strong></p>";

}

for ($i=0; $i<$number_of_orders; $i++) {

echo $orders[$i]."<br />";

}

?>

</body>

</html>

Здесь используется функция file(), которая загружает содержимое файла в массив $orders. Каждая строка файла становится отдельным элементом массива. Функция count() подсчитывает количество элементов в массиве.

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

<?php

// создание короткого имени переменной

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

?>

<html>

<head>

<title>Автозапчасти— Заказы клиентов</title>

</head>

<body>

<h1>Автозапчасти </h1>

<h2>Заказы клиентов</h2>

<?php

// Считывание всего файла.

// Каждый заказ становится элементом массива

$orders= file ("$DOCUMENT_ROOT/../orders/orders.txt");

// Подсчет количества заказов, хранящихся в массиве

$number_of_orders = count($orders);

if ($number_of_orders == 0) {

echo "<p><strong>Нет необработанных заказов.

Загляните позже.</strong></p>";

}

echo "<table border=\"1\">\n";

echo "<tr>" .

"<th bgcolor = \"#CCCCFF\">Дата заказа</th>" .

"<th bgcolor = \"#CCCCFF\">Покрышки</th>" .

"<th bgcolor = \"#CCCCFF\">Масло</th>" .

"<th bgcolor = \"#CCCCFF\">Свечи</th>" .

"<th bgcolor = \"#CCCCFF\">Всего</th>" .

"<th bgcolor = \"#CCCCFF\">Адрес</th>" .

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

Здесь функция explode() используется для разбиения считанной строки, чтобы перед выводом ее можно было предварительно обработать или отформатировать.

Прототип функции:

array explode(string separator, string string[, int limit)

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

Необязательный параметр limit используется для того, чтобы ограничить максимальное количество частей, на которые разбивается строка.

В нашем примере вместо того чтобы в каждой строкк выводить название товара (покрышки, бутылки масла и свечи зажигания), в ней отображается только заказанное количество, а таблица снабжается строкой заголовка.

Существует ряд способов извлечения чисел из строк.Функция intval() преобразует тип string в тип integer. Преобразование выполняется достаточно рационально – оно игнорирует такие фрагменты строки как метка, которые не могут быть преобразованы в integer.

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