Sayfalar

Bir Diziyi Sizin Belirlediğiniz Bir Fonksiyona Göre Sıralamak


Bir diziyi kendi belirlediginiz kurala gore siralamak istiyorsunuz.Buna sebep PHP'nin hazir siralama fonksiyonlarinin yetersizligi olabilir.

Cozum : usort () fonksiyonu, kullanici tanimli bir fonksiyona gore bir diziyi siralayabilir.

Ornek :

    <?php
    function borcu_sirala ($a,$b)
    {

        if ($a[1]==$b[1]) return 0;
        return ($b[1] > $a[1]) ? 1 : -1;

    }

    /*
    Diyelim ki her gun poker oyunu oynadiginiz arkadaslarinizin size olan borcunu bir dizide
    sakliyorsunuz ve bu diziyi en buyuk borctan en kucuge dogru siralamak istiyorsunuz.
    */

    $poker_borclari = array(array("Oktay",31),array("Tayfun",12),array("Kris",18));

    usort ($poker_borclari,'borcu_sirala');

    foreach ($poker_borclari as $borclar) {

        print $borclar[0]." isimli kisinin bana olan borcu :".$borclar[1];
        print "<br>";

    }
    ?>

Aciklama : usort () fonksiyonu argument olarak bir dizi ve kullanici tanimli bir fonksiyonun ismini alir.Ilk argumentte aldigi diziyi,ikinci argumentte yer alan fonksiyona gore siralar.Bu kullanici tanimli fonksiyon mutlaka "-1,0 veya 1" sonuclarindan birini dondurmelidir.

PHP'nin yapisal siralama fonksiyonlari "dizilerin dizilerini" siralayamazlar.Bu ozellik PHP4'e henuz eklenmemistir.

Ancak yukaridaki sekilde yapilandirilmis sizileri "usort ()" ile kendi yazdiginiz fonksiyonlarla siralayabilirsiniz.