Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции asort, rsort, arsort




Функция sort

Сортировка массивов

Необходимость сортировки данных, в том числе и данных, хранящихся в виде массивов, очень часто возникает при решении самых разнообразных задач. Если в языке Си для того, чтобы решить эту задачу, нужно написать десятки строк кода, то в PHP это делается одной простой командой.

Функция sort имеет следующий синтаксис

sort (массив [, флаги])

и сортирует массив, т.е. упорядочивает его значения по возрастанию. Эта функция удаляет все существовавшие в массиве ключи, заменяя их числовыми индексами, соответствующими новом порядку элементов. В случае успешного завершения работы она возвращает true, иначе – false.

Пример 7.6. Пусть у нас есть два массива: цены товаров – их названия и, наоборот, названия товаров – их цены. Упорядочим эти массивы по возрастанию:

$items = array(10 => "хлеб", 20 => "молоко", 30 => "бутерброд");sort($items); // строки сортируются в алфавитном // порядке, ключи теряютсяprint_r($items); $rev_items = array("хлеб" => 10, "бутерброд" => 30, "молоко" => 20);sort($rev_items); // числа сортируются по возрастанию, // ключи теряютсяprint_r($rev_items);?>

Пример 7.6. Применение функции sort() (html, txt)

Получим:

Array ([0] => бутерброд [1] => молоко [2] => хлеб)Array ([0] => 10 [1] => 20 [2] => 30)

В качестве дополнительного аргумента флаги может использоваться одна из следующих констант:

  • SORT_REGULAR – сравнивать элементы массива обычным образом;
  • SORT_NUMERIC – сравнивать элементы массива как числа;
  • SORT_STRING – сравнивать элементы массива как строки.

Если требуется сохранять индексы элементов массива после сортировки, то нужно использовать функцию asort (массив [, флаги]). Если необходимо отсортировать массив в обратном порядке, т.е. от наибольшего значения к наименьшему, то можно задействовать функцию rsort (массив [, флаги]). А если при этом нужно еще и сохранить значения ключей, то следует использовать функцию arsort(массив [, флаги]). Как вы, наверное, заметили синтаксис у этих функций абсолютно такой же, как у функции sort. Соответственно и значения флагов могут быть такими же, как у sort: SORT_REGULAR, SORT_NUMERIC, SORT_STRING. Кстати говоря, флаг SORT_NUMERIC появился только в PHP4.

<?php$books = array("Пушкин"=>"Руслан и Людмила", "Толстой"=>"Война и мир", "Лермонтов"=>"Герой нашего времени");asort($books); // сортируем массив, // сохраняя значения ключейprint_r($books);echo "<br>";rsort($books); // сортируем массив в обратном порядке, // ключи будут замененыprint_r($books);?>

Пример 7.7. Применение функций asort, rsort, arsort (html, txt)

В результате работы этого скрипта получим:

Array ([Толстой] => Война и мир [Лермонтов] => Герой нашего времени [Пушкин] => Руслан и Людмила)Array ([0] => Руслан и Людмила [1] => Герой нашего времени [2] => Война и мир)

Пример 7.8. Допустим, мы создаем каталог описаний документов. У каждого документа есть автор, название, дата публикации и краткое содержание. Мы уже не раз отображали описания, составленные из этих характеристик. Каждый раз порядок отображения этих элементов зависел от созданной нами программы. Теперь же мы хотим иметь возможность изменять порядок отображения элементов по желанию пользователя. Составим для этого следующую форму:

<form action=task.php><table border=1><tr><td>Название </td><td><input type=text name=title size=5> </td></tr><tr><td>Краткое содержание </td><td><input type=text name=description size=5> </td></tr><tr><td>Автор </td><td><input type=text name=author size=5> </td></tr><tr><td>Дата публикации </td><td><input type=text name=published size=5></td></tr></table><input type=submit value="Отправить"></form>

Пример 7.8a. Форма для примера 7.8 (html, txt)

Будем упорядочивать данные, переданные этой формой, по убыванию их значений, сохраняя при этом значения ключей. Для этого удобно воспользоваться функцией arsort(). Поскольку нам важен только новый порядок элементов, сохраним в новом массиве ключи исходного массива в нужном порядке. Мы сохраняем ключи исходного массива, поскольку они являются именами элементов, из которых конструируется описание документа, а помнить их важно. Итак, получаем такой скрипт:

<?phpprint_r($_GET); echo "<br>";arsort ($_GET); // сортируем массив в обратном порядке, // сохраняя ключиprint_r($_GET); echo "<br>";$ordered_names = array_keys($_GET); // составляем новый массивforeach($ordered_names as $key => $val)echo "$key:$val <br>"; // выводим элементы нового массива?>



Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.