usort

(PHP 4, PHP 5, PHP 7)

usortBir diziyi kullanıcı tanımlı bir işlev kullanarak değerlerine göre sıralar

Açıklama

usort ( array &$array , callback $karş_işlevi ) : bool

Bu işlev kullanıcı tarafından sağlanmış bir karşılaştırma işlevini kullanarak diziyi değerlerine göre sıralar. Sıralamak istediğiniz diziyi mevcut kuralların dışında bir kurala göre sıralamak isterseniz bu işlev çok işe yarar.

Bilginize:

Karşılaştırma sırasında birbirinin eşi iki üye bulunursa aralarındaki sıralamanın nasıl olacağı belirsizdir.

Bilginize: Bu işlev dizi elemanlarına yeni anahtarlar atar. Anahtarları yeniden düzenlemek yerine evvelce atanmış anahtarları silecektir.

Değiştirgeler

dizi

Sıralanacak dizi.

karş_işlevi

Karşılaştırma için geriçağırım işlevi.

karş_işlevi dizi değerlerinin aktarılacağı iki değiştirge kabul etmelidir. Birinci değiştirgenin ikinciden büyük, küçük veya ona eşit olduğu durumlarda sırayla sıfırdan büyük, sıfırdan küçük bir değer veya sıfır döndürmelidir.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Sürüm Bilgisi

Sürüm: Açıklama
4.1.0 Yeni sıralama algoritması devreye girdi. karş_işlevi karşılaştırıldıklarında eşit olan elemanların özgün sırasını korumuyor.

Örnekler

Örnek 1 - usort() örneği

<?php
function cmp($a$b)
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

foreach (
$a as $anahtar => $değer) {
    echo 
"$anahtar$değer\n";
}
?>

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

0: 1
1: 2
2: 3
3: 5
4: 6

Bilginize:

Açıkçası, bu örnek için sort() işlevi daha uygun olurdu.

Örnek 2 - usort() ve çok boyutlu dizi

<?php
function karşılaştır($a$b)
{
    return 
strcmp($a["meyva"], $b["meyva"]);
}

$meyvalar[0]["meyva"] = "mandalina";
$meyvalar[1]["meyva"] = "limon";
$meyvalar[2]["meyva"] = "portakal";

usort($meyvalar"karşılaştır");

while (list(
$anah$değer) = each($meyvalar)) {
    echo 
"\$meyvalar[$anah]: " $değer["meyva"] . "\n";
}
?>

Bir çok boyutlu dizi sıralanırken $a ve $b dizinin ilk indisine gönderimleri içerir.

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

$meyvalar[0]: limon
$meyvalar[1]: mandalina
$meyvalar[2]: portakal

Örnek 3 - Bir nesnenin üye yöntemini kullanan usort() örneği

<?php
class Deneme {
    var 
$isim;

    function 
Deneme($isim)
    {
        
$this->isim $isim;
    }

    
/* Duruk karşılaştırma işlevi: */
    
static function nesne_karşılaştır($a$b)
    {
        
$al strtolower($a->isim);
        
$bl strtolower($b->isim);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new Deneme("c");
$a[] = new Deneme("b");
$a[] = new Deneme("d");

usort($a, array("Deneme""nesne_karşılaştır"));

foreach (
$a as $öğe) {
    echo 
$öğe->isim "\n";
}
?>

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

b
c
d

Ayrıca Bakınız

  • uasort() - Bir diziyi kullanıcı tanımlı bir işlev kullanarak indislerine göre sıralarken anahtar/değer ilişkisini korur
  • Dizilerde Sıralama