Как сортировать массив?

Сортировка массивов является одной из наиболее часто используемых операций в программировании. В языке PHP существует несколько функций для сортировки массивов.

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

$numbers = array(4, 2, 1, 3);
sort($numbers);
print_r($numbers);

Вывод:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

Другая функция - rsort(). Она работает так же, но сортирует массив в порядке убывания значений элементов.

$numbers = array(4, 2, 1, 3);
rsort($numbers);
print_r($numbers);

Вывод:

Array
(
    [0] => 4
    [1] => 3
    [2] => 2
    [3] => 1
)

Также существует функция asort(), которая сортирует массив в порядке возрастания значений элементов, сохраняя связь между ключами и значениями.

$numbers = array(
    "one" => 1,
    "four" => 4,
    "two" => 2,
    "three" => 3
);
asort($numbers);
print_r($numbers);

Вывод:

Array
(
    [one] => 1
    [two] => 2
    [three] => 3
    [four] => 4
)

Функция arsort() работает аналогично, но сортирует массив в порядке убывания значений элементов.

Следующие две функции сортируют массивы только по ключам: ksort() сортирует массив по возрастанию ключей, а krsort() - по убыванию ключей.

$numbers = array(
    "two" => 2,
    "one" => 1,
    "four" => 4,
    "three" => 3
);
ksort($numbers);
print_r($numbers);

Вывод:

Array
(
    [four] => 4
    [one] => 1
    [three] => 3
    [two] => 2
)
$numbers = array(
    "two" => 2,
    "one" => 1,
    "four" => 4,
    "three" => 3
);
krsort($numbers);
print_r($numbers);

Вывод:

Array
(
    [two] => 2
    [three] => 3
    [one] => 1
    [four] => 4
)

Если вы хотите отсортировать массив, но сохранить ключи, можно использовать функцию uasort(). Она позволяет определить свою функцию сравнения.

Например, если мы хотим отсортировать числа по нестандартному критерию, например, по возрастанию последней цифры:

function compare_last_digit($a, $b)
{
    return ($a % 10) - ($b % 10);
}

$numbers = array(123, 55, 27, 801, 439);
uasort($numbers, "compare_last_digit");
print_r($numbers);

Вывод:

Array
(
    [2] => 801
    [0] => 123
    [4] => 439
    [3] => 27
    [1] => 55
)

На этом мы рассмотрели основные функции для сортировки массивов в PHP. Вы можете использовать их для удовлетворения различных потребностей в сортировке данных.