a quick reminder on the syntax if you want to use uasort in a Class or Object:
<?php
// procedural:
uasort($collection, 'my_sort_function');
// Object Oriented
uasort($collection, array($this, 'mySortMethod'));
// Objet Oriented with static method
uasort($collection, array('self', 'myStaticSortMethod'));
?>uasort
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
uasort
Референца за `function.uasort.php` со подобрена типографија и навигација.
uasort
(PHP 4, PHP 5, PHP 7, PHP 8)
uasort — Сортирај низа со кориснички дефинирана функција за споредба и одржи асоцијација на индекс
= NULL
Сортира array на место така што неговите клучеви ја одржуваат својата корелација со вредностите со кои се поврзани, користејќи кориснички дефинирана функција за споредба.
Ова се користи главно при сортирање на асоцијативни низи каде што реалниот редослед на елементите е значаен.
Забелешка:
Ако два члена се споредат како еднакви, тие го задржуваат својот оригинален редослед. Пред PHP 8.0.0, нивниот релативен редослед во сортираната низа беше недефиниран.
Забелешка:
Ги ресетира внатрешниот покажувач на низата на првиот елемент.
Параметри
array-
Влезната низа.
callback-
Функцијата за споредба мора да врати цел број помал, еднаков или поголем од нула ако првиот аргумент се смета за помал, еднаков или поголем од вториот, соодветно.
Безбедност: стандардниот сет на знациВраќање non-integer вредности од функцијата за споредба, како што се floatќе резултира со внатрешно префрлање во int на вратената вредност на повиканата функција. Така вредности како
0.99and0.1ќе бидат префрлени во цел број од0, што ќе ги спореди таквите вредности како еднакви.
Вратени вредности
Секогаш враќа true.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.2.0 |
Типот на враќање е true сега; претходно, беше bool.
|
| 8.0.0 |
Враќа callback очекува параметар да биде предаден со референца, оваа функција сега ќе емитува E_WARNING.
|
Примери
Пример #1 Основен uasort() example
<?php
// Comparison function
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
// Sort and print the resulting array
uasort($array, 'cmp');
print_r($array);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
)
Види Исто така
- usort() - Сортирај низа по вредности користејќи кориснички дефинирана функција за споредба
- uksort() - Сортирај список по клучеви со кориснички дефинирана функција за споредба
- На споредба на функции за сортирање на списоци
Белешки од корисници 4 белешки
An Example using anonymous function.
Anonymous functions make some time the code easier to understand.
<?php
$fruits = array('Orange9','Orange11','Orange10','Orange6','Orange15');
uasort ( $fruits , function ($a, $b) {
return strnatcmp($a,$b); // or other function/code
}
);
print_r($fruits);
?>
returns
Array
(
[3] => Orange6
[0] => Orange9
[2] => Orange10
[1] => Orange11
[4] => Orange15
)Is it just me, or are the examples below misleading, and actually demonstrating situations that would be more appropriate for usort()?
After trying to make sense of the uasort() description, it sounds like it's more for sorting a 1D array like this:
"john" => "$23.12"
"tim" => "$6.50"
"bob" => "$18.54"
and getting back:
"tim" => "$6.50"
"bob" => "$18.54"
"john" => $23.12"
(assuming, of course, that your sort function is lopping off the $ and evaluating as a number -- which would complicate the use of asort() ;)Since php7.0 you can replace this boilerplate
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
with the spaceship operator:
https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op
return $a <=> $b;