Язык программирования PHP | страница 64



> // ключи будут заменены

>print_r($books);

>?>



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


>Array ( [Толстой] => Война и мир

> [Лермонтов] => Герой нашего времени

> [Пушкин] => Руслан и Людмила )

>Array ( [0] => Руслан и Людмила

> [1] => Герой нашего времени

> [2] => Война и мир )



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


>

>

>

>

>

>

>

Название

> name=title size=5>

Краткое содержание

> type=text name=description size=5>

>

Автор

> name=author size=5>

Дата публикации

> type=text name=published size=5>

>

>



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


>

>print_r($_GET); echo "
";

>arsort ($_GET);

> // сортируем массив в обратном порядке,

> // сохраняя ключи

>print_r($_GET); echo "
";

>$ordered_names = array_keys($_GET);

> // составляем новый массив

>foreach($ordered_names as $key => $val)

>echo "$key :$val
";

> // выводим элементы нового массива

>?>



Сортировка массива по ключам


Очевидно, что может возникнуть необходимость в сортировке массива по значениям ключей. Например, если у нас есть массив данных о книгах, как в приведенном выше примере, то вполне вероятно, что мы захотим отсортировать книги по именам авторов. Для этого в PHP также не нужно писать много строк кода – можно просто воспользоваться функцией ksort() для сортировки по возрастанию (прямой порядок сортировки) или krsort() – для сортировки по убыванию (обратный порядок сортировки). Синтаксис этих функций опять же аналогичен синтаксису функции sort().