uasort

(PHP 4, PHP 5, PHP 7, PHP 8)

uasortBir diziyi kullanıcı tanımlı bir işlev kullanarak indislerine göre sıralarken anahtar/değer ilişkisini korur

Açıklama

uasort(array &$dizi, callable $karş_işlevi): true

Bu işlev kullanıcı tarafından sağlanmış bir karşılaştırma işlevini kullanarak diziyi indislerine göre sıralarken anahtar/değer ilişkisini korur.

Bu işlev, esas olarak, eleman sırasının önemli olduğu ilişkisel dizileri sıralarken kullanılır.

Bilginize:

Dahili dizi göstericisi ilk elemana atanır.

Bağımsız Değişkenler

dizi

Sıralanacak dizi.

karş_işlevi

Karşılaştırma işlevinin, ilk bileşeninin ikinci bileşenden küçük, eşit veya büyük olması durumunda sıfırdan küçük, eşit veya büyük bir tamsayı döndürmesi gerekir.

callback(mixed $a, mixed $b): int
Dikkat

Karşılaştırma işlevinden float gibi tamsayı olmayan değerlerin döndürülmesi, geri çağırım işlevinin dönüş değerinin dahili olarak int türüne dönüştürülmesiyle sonuçlanır. Bu nedenle 0.99 ve 0.1 gibi değerlerin her ikisi de 0 tamsayı değerine dönüştürüp bunlar eşit değerler olarak karşılaştırılacaktır.

Dönen Değerler

Daima true döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.2.0 Dönüş türü artık true;evvelce, bool idi.
8.0.0 Eğer işleve bağımsız değişkenlerinden biri gönderimli aktarılıyorsa, bu artık E_WARNING seviyesinde bir uyarıya sebep oluyor.

Örnekler

Örnek 1 - uasort() örneği

<?php
// Karşılaştırma işlevi
function karş($a, $b) {
if (
$a == $b) {
return
0;
}
return (
$a < $b) ? -1 : 1;
}

// Sıralanacak dizi
$dizi = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($dizi);

// Sıralayıp sonucu basalım
uasort($dizi, 'karş');
print_r($dizi);
?>

Yukarıdaki örneğin çıktısı:

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
)

Ayrıca Bakınız

  • usort() - Bir diziyi kullanıcı tanımlı bir işlev kullanarak değerlerine göre sıralar
  • uksort() - Bir diziyi kullanıcı tanımlı bir işlev kullanarak anahtarlarına göre sıralar
  • Dizilerde Sıralama
add a note

User Contributed Notes 4 notes

up
152
magikMaker
14 years ago
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'));

?>
up
34
yannick dot battail at gmail dot com
14 years ago
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
)
up
5
php at eden2 dot com
21 years ago
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() ;)
up
0
raveren at gmail dot com
9 days ago
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;
To Top