Язык программирования PHP | страница 63
Необходимость сортировки данных, в том числе и данных, хранящихся в виде массивов, очень часто возникает при решении самых разнообразных задач. Если в языке Си для того, чтобы решить эту задачу, нужно написать десятки строк кода, то в PHP это делается одной простой командой.
Функция sort
Функция 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);
>?>
Получим:
>Array ( [0] => бутерброд [1] =>
> молоко [2] => хлеб )
>Array ( [0] => 10 [1] => 20 [2] => 30 )
В качестве дополнительного аргумента флаги может использоваться одна из следующих констант:
- SORT_REGULAR – сравнивать элементы массива обычным образом;
- SORT_NUMERIC – сравнивать элементы массива как числа;
- SORT_STRING – сравнивать элементы массива как строки.
Функции asort, rsort, arsort
Если требуется сохранять индексы элементов массива после сортировки, то нужно использовать функцию asort (массив [, флаги]). Если необходимо отсортировать массив в обратном порядке, т.е. от наибольшего значения к наименьшему, то можно задействовать функцию rsort (массив [, флаги]). А если при этом нужно еще и сохранить значения ключей, то следует использовать функцию arsort(массив [, флаги]). Как вы, наверное, заметили синтаксис у этих функций абсолютно такой же, как у функции sort. Соответственно и значения флагов могут быть такими же, как у sort: SORT_REGULAR, SORT_NUMERIC, SORT_STRING. Кстати говоря, флаг SORT_NUMERIC появился только в PHP4.
>
>$books = array("Пушкин"=>"Руслан и Людмила",
> "Толстой"=>"Война и мир",
> "Лермонтов"=>"Герой нашего времени");
>asort($books);
> // сортируем массив,
> // сохраняя значения ключей
>print_r($books);
>echo "
";
>rsort($books);
> // сортируем массив в обратном порядке,