#3. 9 php Сортировка массивов
Primary tabs
В 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() можно отсортировать массив по произвольному критерию.
- Log in to post comments
- 642 reads