2024 日本 PHP 研討會

rsort

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

rsort依遞減順序排序陣列

說明

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

依值以遞減順序排序 array

注意:

如果兩個成員比較相等,它們會保留其原始順序。在 PHP 8.0.0 之前,它們在排序陣列中的相對順序未定義。

注意此函式會將新的鍵分配給 array 中的元素。它會移除任何可能已分配的現有鍵,而不是僅重新排序鍵。

注意:

將陣列的內部指標重設為第一個元素。

參數

array

輸入的陣列。

flags

第二個參數 flags 是選用的,可用於修改排序行為,可使用下列值:

排序類型標記

返回值

永遠返回 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 則註解

5
Alex M
19 年前
一種更簡潔(我認為)的方法,可以根據檔案的修改日期以相反的順序排序檔案列表。

<?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); #二維陣列
}
closedir($dh);

if (
$files)
{
rsort($files); #根據 filemtime 排序

#完成!顯示按修改日期排序的檔案
foreach ($files as $file)
echo
"$file[0] $file[1]<br>\n"; #file[0]=Unix 時間戳記; file[1]=檔案名稱
}
?>
0
ray at non-aol dot com
20 年前
如同 sort(),rsort() 會為陣列中的元素分配新的鍵值。它會移除您可能已分配的任何現有鍵值,而不是僅重新排序鍵值。這表示它會破壞關聯式鍵值。

$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 )

使用 KSORT() 或 KRSORT() 來保留關聯式鍵值。
-4
slevy1 at pipeline dot com
23 年前
我以為 rsort 在一個已經用 usort() 排序過的多維字串陣列上可以成功運作。但是,我今天注意到該陣列只有部分以降序排列。我嘗試對其使用 array_reverse,這似乎解決了問題。
To Top