array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.uksort.php', 1 => 'uksort', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Функции для работы с массивами', ), 'prev' => array ( 0 => 'function.uasort.php', 1 => 'uasort', ), 'next' => array ( 0 => 'function.usort.php', 1 => 'usort', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/array/functions/uksort.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
uksort — Сортирует массив по ключам пользовательской функцией сравнения
На месте сортирует массив (array
) по ключам,
для чего использует пользовательскую функцию сравнения,
которая и определяет порядок.
Замечание:
Функция сохраняет первоначальный порядок элементов, если при сравнении значения двух элементов равны. До PHP 8.0.0 порядок элементов в отсортированном массиве оставался неопределённым.
Замечание:
Функция сбрасывает внутренний указатель массива на первый элемент.
array
Входной массив.
callback
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
Возвращение нецелых значений из функции сравнения,
таких как число с плавающей точкой (float), приведёт к внутреннему
приведению возвращаемого значения callback-функции к целому числу (int).
Таким образом, значения 0.99
и 0.1
будут
приведены к целочисленному значению 0
,
что позволит сравнить эти значения как равные.
Функция всегда возвращает true
.
Версия | Описание |
---|---|
8.2.0 |
Тип возвращаемого значения теперь true ; ранее было bool.
|
8.0.0 |
Теперь функция выдаст ошибку уровня E_WARNING ,
если параметр callback-функции, переданной в параметр callback ,
ожидает передачу значения по ссылке.
|
Пример #1 Пример использования функции uksort()
<?php
function cmp($a, $b)
{
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
return strcasecmp($a, $b);
}
$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);
uksort($a, "cmp");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>
Результат выполнения приведённого примера:
an apple: 3 a banana: 4 the Earth: 2 John: 1