(PHP 4, PHP 5, PHP 7, PHP 8)
arsort — Сортирует массив в порядке убывания, сохраняя ассоциацию индексов
Функция сортирует массив (array) в порядке убывания так,
чтобы ключи массива сохраняли корреляцию со значениями, с которыми они связаны.
Функцией пользуются для сортировки ассоциативных массивов, для которых важен текущий порядок элементов.
Замечание: Функция сохраняет первоначальный порядок элементов, если при сравнении значения двух элементов равны. До PHP 8.0.0 взаимный порядок одинаковых по значению элементов в отсортированном массиве оставался неопределённым.
Замечание: Функция сбрасывает внутренний указатель массива на первый элемент.
arrayВходной массив.
flagsflags изменяет поведение сортировки и принимает следующие значения:
Флаги типов сортировки:
SORT_REGULAR — обычное сравнение элементов;
подробности описаны в разделе операторы сравнения
SORT_NUMERIC — числовое сравнение элементов
SORT_STRING — строковое сравнение элементов
SORT_LOCALE_STRING — сравнение элементов
как строк на основе текущего языкового стандарта. Флаг использует языковой стандарт,
который доступен для изменения4 функцией setlocale()
SORT_NATURAL — сравнение элементов как строк
на основе «естественного порядка» наподобие natsort()
SORT_FLAG_CASE — флаг объединяют
через побитовое ИЛИ
с флагом SORT_STRING
или SORT_NATURAL для сортировки строк без учёта регистра
Функция возвращает логическое значение true .
| Версия | Описание |
|---|---|
| 8.2.0 |
Вместо общего логического типа bool теперь возвращается конкретный тип 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
Названия фруктов были отсортированы в обратном порядке и ключи, ассоциированные с элементами, были сохранены.
If you need to sort a multi-demension array, for example, an array such as
$TeamInfo[$TeamID]["WinRecord"]
$TeamInfo[$TeamID]["LossRecord"]
$TeamInfo[$TeamID]["TieRecord"]
$TeamInfo[$TeamID]["GoalDiff"]
$TeamInfo[$TeamID]["TeamPoints"]
and you have say, 100 teams here, and want to sort by "TeamPoints":
first, create your multi-dimensional array. Now, create another, single dimension array populated with the scores from the first array, and with indexes of corresponding team_id... ie
$foo[25] = 14
$foo[47] = 42
or whatever.
Now, asort or arsort the second array.
Since the array is now sorted by score or wins/losses or whatever you put in it, the indices are all hoopajooped.
If you just walk through the array, grabbing the index of each entry, (look at the asort example. that for loop does just that) then the index you get will point right back to one of the values of the multi-dimensional array.
Not sure if that's clear, but mail me if it isn't...
-moI have two servers; one running 5.6 and another that is running 7. Using this function on the two servers gets me different results when all of the values are the same.
<?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 results:
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [658] => 2 [696] => 2 [702] => 2 [703] => 2 [706] => 2 )
PHP 7 results:
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )
Array ( [706] => 2 [703] => 2 [702] => 2 [696] => 2 [658] => 2 )