MultiServis.Net //PHP El Kitabı

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>

Bir diziyi sizin belirlediginiz bir fonksiyona gore siralamak : Yazar: Serkan Tarih: 01/04/02

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

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>