[Image] Воскресенье, 05.05.2024, 06:27 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
Логин:
Пароль:
 Блог
Главная » 2010 » Декабрь » 20 » Использование массива как сортируемой таблицы
16:04
Использование массива как сортируемой таблицы
Помимо использования массивов как простых списков, массивы РНР также весьма удобны, когда вы имеете дело с данными в форме таблиц. В этом разделе вы научитесь реализовывать простые таблицы средствами массивов РНР. Затем будет рассмотрен более сложный пример разработки базирующихся на массивах таблиц, которые могут быть отсортированы по нужной колонке с помощью РНР-функций сортировки массивов. Рассмотрим табл. 2.1.
Таблица 2.1. пример таблицы животных
Имя животного - Имя владельца - Вес - Животное
Бим   - Иванов - 9 - Собака
Василий - Петрова - 4 - Кот
Рекс - Сидоров - I - Игуана
Бастер - Собакевич - 23 - Собака
Алиса  - Кошкина - 14 - Собака

 Посмотрите внимательно на таблицу. Как ее реализовать с помощью массивов РНР? Простейший способ — создать ассоциативный массив (на базе имени каждого животного), значения которого будут другими массивами, содержащими остальные данные каждой строки, как показано в листинге 2.14.
Листинг 2.14. Создание простой таблицы с помощью массивов
$petshack = array('Бим' => array('name' => 'Иванов',
'weight' => 9,
'animal' => 'Собака'),
'Василий' => array('name' => 'Петрова',
'weight' => 4,
'animal' => 'Кот'),
'Рекс' => array('name' => 'Сидоров',
'weight' => 1,
'animal' => 'Игуана'),
'Бастер' => array('name' »> 'Собакевич',
'weight' => 23,
'animal' => 'Собака'),
'Алиса' => array('name' => 'Кошкина',
'weight' => 14,
'animal' => 'Собака'));
?>
Проблема со структурой массива состоит в том, что она никак не помогает в сортировке по определенной колонке. Как показано в листинге 2.15, чтобы воспользоваться встроенной функциональностью, каждая колонка должна сохраняться в отдельном массиве (сохраняя ключевые значения таким образом, чтобы индекс 1 для каждого массива соответствовал правильному значению).
Листинг 2.15. Создание сортируемой таблицы с помощью массивов
$petshack['name'] = array('Бим', 'Василий', 'Рекс', 'Бастер', 'Алиса');
$petshack['owner'] = array('Иванов', 'Петрова', 'Сидоров1, 'Собакевич',
1 Кошкина');
$petshack['weight'] = array(9, 4, 1, 23, 14);
$petshack['animal'] = array('Собака', 'Кот', 'Игуана', 'Собака',
'Собака');
Сравните листинги 2.14 и 2.15. Первая вещь, которая, вероятно, сразу заметна, —это то, что второй листинг значительно понятнее первого. Более того, поскольку каждая колонка таблицы представлена отдельным массивом РНР, каждая колонка также может быть отсортирована с применением встроенных функций работы с массивами.
Для выполнения этой сортировки можно воспользоваться PHP-функцией asort ().
Несмотря на то что разработчику на РНР доступно множество функций сортировки, эта конкретная функция выбирается на основании одной важной детали — она поддерживает ассоциативные пары ключ/значение (см. описание array_filter () ранее в настоящей главе, чтобы понять важность этого обстоятельства). Синтаксис asort () выглядит следующим образом: asort($input [, $sort flag]);
НА ЗАМЕТКУ
Функция asort () упорядочивает массив от меньшего значения к большему (или в алфавитном порядке — от А до Z). Если требуется противоположное поведение, можно использовать функцию arsort (), которая аналогична asort ().
$ input представляет массив, который нужно сортировать, a $sort_flag — это необязательный параметр (константа), указывающий тип выполняемой сортировки. Обратите внимание, что константы, значения которых принимает параметр $sort_flag, не являются переменными РНР. Это константы, предопределенные в РНР (больше всего это похоже на то, что можно определить с помощью директивы define). Три возможных значения параметра $sort_f lag перечислены в табл. 2.2.
Таблица 2.2. Константы asort ()
Константа             Описание
SORT_REGULAR Сравнивает элементы нормально (по умолчанию).
SORT_NUMERIC Сравнивает элементы как числовые значения.
SORTSTRING      Сравнивает элементы как строчные значения.
При выполнении функция asort () отсортирует массив $input так, как указано флагом $sort_f lag (возвращаемого значения нет).
Использование функции asort () для сортировки и поддержки вашей табличной структуры становится относительно простой задачей, поскольку каждая колонка вашей таблицы хранится в отдельном массиве. Примените asort () для сортировки по любой из колонок, а затем с помощью foreach () отобразите отсортированные данные в HTML-таблице, как показано в листинге 2.16, в котором выполняется сортировка таблица по колонке веса.
Листинг 2.16. Сортировка таблицы, хранящейся в массивах, с использованием asort ()

CopTHpoBKa массивов


<Н2>Сортировка массивов с использованием функции asort()
$petshack['name'] = array('Бим', 'Василий', 'Рекс', 'Бастер', 'Алиса');
$petshack['owner'] = array('Иванов', 'Петрова', 'Сидоров1, 'Собакевич',
'Кошкина');
$ p e t s h a c k [ ' w e i g h t ' ] = array(20, 10, 3, 54, 30);
$petshack['animal'] = array('Собака',. 'Кот', 'Игуана', 'Собака', 'Собака');
/* Сортировать по весу •*/


asort($petshack['weight'], SORT_NUMERIC);
?>
<TABLE>
<TR>
<TD>MMH ЖИВОТНОГО</ТО>
<Т0>Владелец животного</Т0>
<TD>Bec животного</Т0>
<TD>Bnn животного</Т0>
</TR>
<?php
foreach(Spetshackfweight'] as $key=>$weight) {
echo "<TR>";
echo "<TD>{$petshack['name'][$key]}</TDXTD>($petshack['owner'][$key]}
echo "<TD>{$weight}</TDXTD>{$petshack['animal'][$key]}</TD>";
echo "</TR>";
</TABLE>
</CENTER>
</BODY>
</HTML>
Заменяя массив, передаваемый функции asort () (и соответственно изменяя foreachO для прохождения по массиву, который должен быть отсортирован), этот сценарий можно модифицировать с минимальными затратами для выполнения сортировки по любой из колонок.
Категория: Все о PHP | Просмотров: 967 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [589]
Создание сайтов [355]
Заработать в интернете [505]
Технологии [44]
Полезное [368]
Услуги и сервисы [308]
Автоблог [101]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 4
Гостей: 4
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru