International PHP Conference Berlin 2025

rsort

(PHP 4, PHP 5, PHP 7, PHP 8)

rsortСортирует массив в порядке убывания

Описание

rsort(array &$array, int $flags = SORT_REGULAR): true

Сортирует массив (array) по значениям в порядке убывания.

Замечание:

Функция сохраняет первоначальный порядок элементов, если при сравнении значения двух элементов равны. До PHP 8.0.0 порядок элементов в отсортированном массиве оставался неопределённым.

Замечание: Функция присваивает новые ключи элементам массива, который передали в аргументе array. Функция удалит, а не просто переупорядочит ключи входного массива.

Замечание:

Функция сбрасывает внутренний указатель массива на первый элемент.

Список параметров

array

Входной массив.

flags

Необязательный второй параметр flags изменяет поведение сортировки и может принимать следующие значения:

Флаги типов сортировки:

  • SORT_REGULAR — обычное сравнение элементов; подробности описаны в разделе операторы сравнения
  • SORT_NUMERIC — числовое сравнение элементов
  • SORT_STRING — строковое сравнение элементов
  • SORT_LOCALE_STRING — сравнение элементов как строк на основе текущего языкового стандарта. Флаг использует языковой стандарт, который можно изменить функцией setlocale()
  • SORT_NATURAL — сравнение элементов как строки, используя "естественный порядок", например natsort()
  • SORT_FLAG_CASE — можно объединять (побитовое ИЛИ) с SORT_STRING или SORT_NATURAL для сортировки строк без учёта регистра

Возвращаемые значения

Функция возвращает логическое значение true.

Список изменений

Версия Описание
8.2.0 Значение возврата теперь принадлежит типу true; раньше значение принадлежало типу bool.

Примеры

Пример #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

Названия фруктов были отсортированы по алфавиту в обратном порядке.

Смотрите также

Добавить

Примечания пользователей 3 notes

up
5
Alex M
19 years ago
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
}
?>
up
0
ray at non-aol dot com
20 years ago
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.
up
-4
slevy1 at pipeline dot com
23 years ago
I thought rsort was working successfully or on a multi-dimensional array of strings that had first been sorted with usort(). But, I noticed today that the array was only partially in descending order. I tried array_reverse on it and that seems to have solved things.
To Top