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.
Ornek Dosyalar
http://www.turk-php.com/ornekler/usort_ornegi.php
http://www.turk-php.com/ornekler/usort_ornegi.phps
Kaynak : ISBN 0-672-31924-1
Serkan Hadi Ceylani
serkan@turk-php.com
|