(PHP 4, PHP 5, PHP 7, PHP 8)
rsort — Сортирует массив в порядке убывания
Сортирует массив (array) по значениям в порядке убывания.
Замечание:
Функция сохраняет первоначальный порядок элементов, если при сравнении значения двух элементов равны. До PHP 8.0.0 взаимный порядок одинаковых по значению элементов в отсортированном массиве оставался неопределённым.
Замечание:
Функция присваивает новые ключи элементам массива, который передали в аргументе
array. Функция удалит, а не просто переупорядочит ключи входного массива.
Замечание:
Функция сбрасывает внутренний указатель массива на первый элемент.
arrayВходной массив.
flags
Необязательный второй параметр flags изменяет поведение сортировки и принимает следующие значения:
Флаги типов сортировки:
SORT_REGULAR — обычное сравнение элементов;
подробности описаны в разделе операторы сравнения
SORT_NUMERIC — числовое сравнение элементов
SORT_STRING — строковое сравнение элементов
SORT_LOCALE_STRING — сравнение элементов
как строк на основе текущего языкового стандарта. Флаг использует языковой стандарт,
который доступен для изменения4 функцией setlocale()
SORT_NATURAL — сравнение элементов как строк
на основе «естественного порядка» наподобие natsort()
SORT_FLAG_CASE — флаг объединяют
через побитовое ИЛИ
с флагом SORT_STRING
или SORT_NATURAL для сортировки строк без учёта регистра
Функция возвращает логическое значение true .
| Версия | Описание |
|---|---|
| 8.2.0 |
Вместо общего логического типа bool теперь возвращается конкретный тип true .
|
Пример #1 Пример использования функции rsort()
<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>Результат выполнения приведённого примера:
0 = orange 1 = lemon 2 = banana 3 = apple
Названия фруктов были отсортированы по алфавиту в обратном порядке.
A cleaner (I think) way to sort a list of files into reversed order based on their modification date.
<?php
$path = $_SERVER[DOCUMENT_ROOT]."/files/";
$dh = @opendir($path);
while (false !== ($file=readdir($dh)))
{
if (substr($file,0,1)!=".")
$files[]=array(filemtime($path.$file),$file); #2-D array
}
closedir($dh);
if ($files)
{
rsort($files); #sorts by filemtime
#done! Show the files sorted by modification date
foreach ($files as $file)
echo "$file[0]$file[1]<br>\n"; #file[0]=Unix timestamp; file[1]=filename
}
?>Like sort(), rsort() assigns new keys for the elements in array. It will remove any existing keys you may have assigned, rather than just reordering the keys. This means that it will destroy associative keys.
$animals = array("dog"=>"large", "cat"=>"medium", "mouse"=>"small");
print_r($animals);
//Array ( [dog] => large [cat] => medium [mouse] => small )
rsort($animals);
print_r($animals);
//Array ( [0] => small [1] => medium [2] => large )
Use KSORT() or KRSORT() to preserve associative keys.