52568.fb2
?>
Получим следующее:
Array ( [0] => Lisp [1] => Java [2]
=> Python [4] => PHP [5] => Perl )
Далее рассмотрим задачу сортировки массива.
Сортировка массивов
Необходимость сортировки данных, в том числе и данных, хранящихся в виде массивов, очень часто возникает при решении самых разнообразных задач. Если в языке Си для того, чтобы решить эту задачу, нужно написать десятки строк кода, то в 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.
<?php
$books = array("Пушкин"=>"Руслан и Людмила",
"Толстой"=>"Война и мир",
"Лермонтов"=>"Герой нашего времени");
asort($books);
// сортируем массив,
// сохраняя значения ключей
print_r($books);
echo "<br>";
rsort($books);
// сортируем массив в обратном порядке,