2024年PHP日本大会

arsort

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

arsort以降序排序数组并保持索引关联

描述

arsort(数组 &$array, 整数 $flags = SORT_REGULAR): true

array数组就地按降序排序,使其键保持与其关联的值的相关性。

这主要用于排序关联数组的情况,其中实际元素顺序很重要。

注意:

如果两个成员比较结果相等,则它们保留其原始顺序。在PHP 8.0.0之前,它们在已排序数组中的相对顺序是未定义的。

注意:

将数组的内部指针重置为第一个元素。

参数

array

输入数组。

flags

可选的第二个参数flags可用于使用这些值修改排序行为

排序类型标志

返回值

始终返回true

变更日志

版本 描述
8.2.0 返回值类型现在为true;之前为布尔值

示例

示例 #1 arsort() 示例

<?php
$fruits
= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach (
$fruits as $key => $val) {
echo
"$key = $val\n";
}
?>

以上示例将输出

a = orange
d = lemon
b = banana
c = apple

水果已按逆字母顺序排序,并且与每个元素关联的索引已保持不变。

参见

添加注释

用户贡献的注释 3 条注释

morgan at anomalyinc dot com
25年前
如果您需要排序多维数组,例如,一个像这样的数组

$TeamInfo[$TeamID]["WinRecord"]
$TeamInfo[$TeamID]["LossRecord"]
$TeamInfo[$TeamID]["TieRecord"]
$TeamInfo[$TeamID]["GoalDiff"]
$TeamInfo[$TeamID]["TeamPoints"]

假设您有100支球队,并且想要按“TeamPoints”排序

首先,创建您的多维数组。现在,创建另一个单维数组,其中填充来自第一个数组的分数,以及对应球队 ID 的索引……例如
$foo[25] = 14
$foo[47] = 42
等等。
现在,对第二个数组使用 asort 或 arsort。
由于数组现在按分数或胜负或您放入其中的任何内容排序,因此所有索引都被打乱了。
如果您只是遍历数组,获取每个条目的索引(查看 asort 示例。该 for 循环就是这样做的),那么您获得的索引将直接指向多维数组的值之一。
不确定是否清楚,如果不清楚,请给我发邮件……
-mo
stephenakins at gmail dot com
7年前
我有两台服务器;一台运行 5.6,另一台运行 7。当所有值都相同时,在这两台服务器上使用此函数会得到不同的结果。

<?php

$list
= json_decode('{"706":2,"703":2,"702":2,"696":2,"658":2}', true);

print_r($list);

arsort($list);
echo
"<br>";

print_r($list);

?>

PHP 5.6 结果
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [658] => 2 [696] => 2 [702] => 2 [703] => 2 [706] => 2 )

PHP 7 结果
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
FatBat
13年前
需要获取关联数组中最大/最高值的索引。
max() 仅返回该值,没有索引,所以我改用此方法。

<?php
reset
($x); // 可选。
arsort($x);
$key_of_max = key($x); // 返回索引。
?>
To Top