rsort

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

rsortSort an array in descending order

Опис

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

Sorts array in place by values in descending order.

Зауваження:

Якщо два члени порівняння однакові, їхній порядок зберігається. До PHP 8.0.0, їхній відносний порядок у впорядкованому масиві був невизначеним.

Зауваження: Ця функція призначає нові ключі для елементів в масиві array. Вона видаляє будь-які наявні ключі, а не просто перевпорядковує їх.

Зауваження:

Скидає внутрішній вказівник масиву на перший елемент.

Параметри

array

The input 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() example

<?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

The fruits have been sorted in reverse alphabetical order.

Прогляньте також

add a note

User Contributed Notes 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