(PHP 4, PHP 5, PHP 7, PHP 8)
uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей
Сортирует array
таким образом,
чтобы его ключи сохраняли свою корреляцию со значениями,
с которыми они связаны, с использованием определяемой пользователем функции сравнения.
Это обычно используется при сортировке ассоциативных массивов, в которых важен актуальный порядок элементов.
Замечание:
Если оба сравниваемых значения эквивалентны, они сохраняют свой первоначальный порядок. До PHP 8.0.0 их относительный порядок в отсортированном массиве не был определён.
Замечание:
Сбрасывает внутренний указатель массива на первый элемент.
array
Входной массив.
callback
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
Возвращение нецелых значений из функции сравнения,
таких как число с плавающей точкой (float), приведёт к внутреннему
приведению возвращаемого значения callback-функции к целому числу (int).
Таким образом, значения 0.99
и 0.1
будут
приведены к целочисленному значению 0
,
что позволит сравнить эти значения как равные.
Функция всегда возвращает true
.
Версия | Описание |
---|---|
8.2.0 |
Тип возвращаемого значения теперь true ; ранее было bool.
|
8.0.0 |
Если параметр callback ожидает, что будет передано значение по ссылке, функция теперь выдаст ошибку уровня E_WARNING .
|
Пример #1 Простой пример использования uasort()
<?php
// Функция сравнения
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
// Сортируемый массив
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
// Сортируем и выводим получившийся массив
uasort($array, 'cmp');
print_r($array);
?>
Результат выполнения данного примера:
Array ( [a] => 4 [b] => 8 [c] => -1 [d] => -9 [e] => 2 [f] => 5 [g] => 3 [h] => -4 ) Array ( [d] => -9 [h] => -4 [c] => -1 [e] => 2 [g] => 3 [a] => 4 [f] => 5 [b] => 8 )