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.