#3. 9 php Сортировка массивов

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

<?php 
    $fruits[0] = "яблоко";
    $fruits[1] = "груша";
    $fruits[2] = "абрикос";
    print_r($fruits);
    sort($fruits);
    print_r($fruits);
?>

Ниже приведён результат выполнения этого примера. Массив $fruits отсортирован, а его элементы перенумерованы.

Array(
    [0] => "яблоко"
    [1] => "груша"
    [2] => "абрикос"
)
Array(
    [0] => "абрикос"
    [1] => "груша"
    [2] => "яблоко"
)

При помощи функции rsort() массив можно отсортировать по убыванию значений его элементов.

<?php 
    $fruits[0] = "яблоко";
    $fruits[1] = "груша";
    $fruits[2] = "абрикос";
    print_r($fruits);
    rsort($fruits);
    print_r($fruits);
?>
Array(
    [0] => "яблоко"
    [1] => "груша"
    [2] => "абрикос"
)
Array(
    [0] => "яблоко"
    [1] => "груша"
    [2] => "абрикос"
)

Но что если в массиве используются строковые индексы? При использовании функций sort() и rsort() происходит перенумерация элементов массива, и информация о строковых индексах будет потеряна. В этом случае на помощь приходит функция asort(), пример использования которой приведён ниже:

<?php 
    $fruits['красный'] = "яблоко";
    $fruits['зеленый'] = "груша";
    $fruits['оранжевый'] = "абрикос";
    print_r($fruits);
    asort($fruits);
    print_r($fruits);
?>

Результат выполнения выглядит так:

Array(
    [красный] => "яблоко"
    [зеленый] => "груша"
    [оранжевый] => "абрикос"
)
Array(
    [оранжевый] => "абрикос"
    [зеленый] => "груша"
    [красный] => "яблоко"
)

Функция arsort() также сохраняет строковые индексы, но сортирует массив по убыванию. Функции ksort() и krsort() сортируют массив не по значениям элементов, а по их индексам (в возрастающем и убывающем порядке соответственно). Наконец, если определить собственную функцию сравнения элементов массива, то при помощи функции usort() можно отсортировать массив по произвольному критерию.

Key Words for FKN + antitotal forum (CS VSU):