(PHP 5 >= 5.2.0, PHP 7, PHP 8)
ArrayObject::uksort — Сортировать массив по ключам, используя пользовательскую функцию для сравнения
Эта функция сортирует ключи записей, используя предоставленную пользователем функцию. Отношения между ключами и элементами сохраняются.
Замечание:
Функция сохраняет первоначальный порядок элементов, если при сравнении значения двух элементов равны. До PHP 8.0.0 порядок элементов в отсортированном массиве оставался неопределённым.
callback
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
Возвращение нецелых значений из функции сравнения,
таких как число с плавающей точкой (float), приведёт к внутреннему
приведению возвращаемого значения callback-функции к целому числу (int).
Таким образом, значения 0.99
и 0.1
будут
приведены к целочисленному значению 0
,
что позволит сравнить эти значения как равные.
Функция возвращает логическое значение true
.
Версия | Описание |
---|---|
8.2.0 |
Значение возврата теперь принадлежит типу true ; раньше значение принадлежало типу bool.
|
Пример #1 Пример использования ArrayObject::uksort()
<?php
function cmp($a, $b) {
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
return strcasecmp($a, $b);
}
$array = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);
$arrayObject = new ArrayObject($array);
$arrayObject->uksort('cmp');
foreach ($arrayObject as $key => $value) {
echo "$key: $value\n";
}
?>
Результат выполнения приведённого примера:
an apple: 3 a banana: 4 the Earth: 2 John: 1