Функция usort
Функция usort
сортирует массив
по значению элементов, используя для
этого коллбэк для определения порядка
элементов в отсортированном массиве.
Функция изменяет сам массив.
Функция сравнения должна возвращать целое число, которое в зависимости от результата сравнения: меньше, равно или больше нуля.
Синтаксис
usort(array &$array, callable $callback): bool
Пример
Давайте отсортируем массив по возрастанию элементов:
<?php
$arr = [1, 3, 2, 5, 4];
function func($a, $b)
{
if ($a === $b) {
return 0;
} else if ($a < $b) {
return -1;
} else {
return 1;
}
}
usort($arr, 'func');
var_dump($arr);
?>
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
А теперь отсортируем массив по убыванию элементов:
<?php
$arr = [1, 3, 2, 5, 4];
function func($a, $b)
{
if ($a === $b) {
return 0;
} else if ($a > $b) {
return -1;
} else {
return 1;
}
}
usort($arr, 'func');
var_dump($arr);
?>
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
А теперь отсортируем массив по возрастанию количества символов в элементах массива:
<?php
$arr = [
'123',
'1',
'12345',
'12',
'1234',
];
function func($a, $b)
{
if (strlen($a) === strlen($b)) {
return 0;
} else if (strlen($a) < strlen($b)) {
return -1;
} else {
return 1;
}
}
usort($arr, 'func');
var_dump($arr);
?>
Результат выполнения кода:
[
'1',
'12',
'123',
'1234',
'12345',
]
Смотрите также
-
функцию
sort
,
которая сортирует по возрастанию элементов -
функцию
rsort
,
которая сортирует по убыванию элементов -
функцию
ksort
,
которая сортирует по возрастанию ключей -
функцию
krsort
,
которая сортирует по убыванию ключей -
функцию
asort
,
которая сортирует по возрастанию элементов с сохранением ключей -
функцию
arsort
,
которая сортирует по убыванию элементов с сохранением ключей -
функцию
natsort
,
которая сортирует натуральным образом -
функцию
natcasesort
,
которая сортирует натуральным образом без регистра -
функцию
usort
,
которая сортирует по коллбэку -
функцию
uksort
,
которая сортирует по коллбэку по ключам -
функцию
uasort
,
которая сортирует по коллбэку с сохранением ключей -
функцию
array_multisort
,
которая сортирует несколько массивов