52568.fb2 Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 45

Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 45

?>

Получим следующее:

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);

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