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 可以使用以下值修改排序行为

排序类型标志

返回值

始终返回 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

水果已按反向字母顺序排序。

参见

添加笔记

用户贡献的笔记 6 个笔记

up
4
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); #2-D 数组
}
closedir($dh);

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

#完成!按修改日期显示排序后的文件
foreach ($files as $file)
echo
"$file[0] $file[1]<br>\n"; #file[0]=Unix 时间戳;file[1]=文件名
}
?>
up
1
ray at non-aol dot com
19 年前
与 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() 来保留关联键。
up
-5
slevy1 at pipeline dot com
23 年前
我认为 rsort 对先前已使用 usort() 排序的多维字符串数组有效。但是,我今天注意到数组只按降序排序了一部分。我尝试了 array_reverse,这似乎解决了问题。
up
-8
pshirkey at boosthardware dot com
19 年前
我需要一个函数,用于根据修改日期按反向顺序对文件列表进行排序。

这是我想到的

function display_content($dir,$ext){

$f = array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($folder = readdir($dh)) !== false) {
if (preg_match("/\s*$ext$/", $folder)) {
$fullpath = "$dir/$folder";
$mtime = filemtime ($fullpath);

$ff = array($mtime => $fullpath);
$f = array_merge($f, $ff);

}
}



rsort($f, SORT_NUMERIC);

while (list($key, $val) = each($f)) {
$fcontents = file($val, "r");
while (list($key, $val) = each($fcontents))
echo "$val\n";
}

}
}

closedir($dh);
}

这样调用它

display_content("folder","extension");
up
-10
rnk-php at kleckner dot net
21 年前
显然 rsort 不会将具有一个值的数组重新设置为零。如果你有一个这样的数组:$tmp = array(9 => 'asdf'),然后对其进行 rsort,$tmp[0] 为空,而 $tmp[9] 保持不变。
up
-13
suniafkhami at gmail dot com
10 年前
如果你正在对来自数据库结果集的数组进行排序,例如 MySQL,另一种方法是使用 ORDER BY DESC 让你的数据库对结果集进行排序,这相当于在 PHP 中对结果数组使用 rsort()。

[由版主编辑以提高清晰度:googleguy at php dot net]
To Top