Navigate / search

ksort() – krsort() ile Dizi Anahtarlarına Göre Sıralama

sort(),rsort(),asort(),arsort() ve natsort() ile dizi değerlerini sıralamayı öğrenmiştik.Şimdide dizi değerlerini değil dizi anahtarlarını sıralamayı göreceğiz.Anahtara göre sıralamak için ksort() ve krsort fonksiyonlarını kullanacağız.
Anahtarlı bir dizi oluşturalım ve yazdıralım.

1
2
3
4
$telefon=array("Nokia"=>335,"Sony"=>250,"Samsung"=>200,"LG"=>180,"General Mobile"=>150);
foreach ($telefon as $marka=>$fiyat){
	echo "$marka = $fiyat<br>";
	}

Telefon marka ve fiyatlraı ekrana şu şekilde gelecektir.

Nokia = 335
Sony = 250
Samsung = 200
LG = 180
General Mobile = 150

Anahtara göre sıralamak istersek.Foreach ile döngüye başlamadan önce ksort($telefon); komutunu kullanmamız gerekiyor.

1
2
3
4
5
$telefon=array("Nokia"=>335,"Sony"=>250,"Samsung"=>200,"LG"=>180,"General Mobile"=>150);
ksort($telefon);
foreach ($telefon as $marka=>$fiyat){
	echo "$marka = $fiyat<br>";
	}

Ksort ile sıraladıktan sonra telefon listemiz şöyle sıralanacaktır.

General Mobile = 150
LG = 180
Nokia = 335
Samsung = 200
Sony = 250

Eğer sıralamayı tersten yapmak istersek krsort() fonksiyonunu kullanmamız gerekecektir.

natsort() ile Dizilerde sıralama(Doğal Sayı Sıralaması)

Dizi sıralamalarıyla ilgili olarak sort rsort asort ve arsort fonksiyonlarını görmüştük.Şimdide natsort() fonksiyonunu ele alacağız.Natsort() fonksiyonu sort() ile aynı görevi yapar fakat işin içine sayısal değerler girdiğinde sort() fonksiyonu sayılarıda alfabetik sistemdeki gibi sıralamak ister.Natsort() fonksiyonu ise sıralamayı sayısal değerlere göre yapar.Şimdi elimizde bi dosya listesi var.Hadi bunları hem sort() hemde natsort() ile sıralayalım.

Kitap1.xls
Kitap23.xls
Kitap6.xls
Kitap10.xls
Kitap62.xls

Bu dosya listesini aşağıdaki gibi sort ile sıralarsak;

1
2
3
4
5
$dosyalar=array("Kitap1.xls","Kitap23.xls","Kitap6.xls","Kitap10.xls","Kitap62.xls");
sort($dosyalar);
foreach ($dosyalar as $dosyaadi){
	echo $dosyaadi."<br>";
	}

Sıralama şöyle olacaktır.

Kitap1.xls
Kitap10.xls
Kitap23.xls
Kitap6.xls
Kitap62.xls

Şimdide sıralamamızı natsort() fonksiyonuyla yapalaım bakalım sıralamamız nasıl değişecek.

1
2
3
4
5
$dosyalar=array("Kitap1.xls","Kitap23.xls","Kitap6.xls","Kitap10.xls","Kitap62.xls");
natsort($dosyalar);
foreach ($dosyalar as $dosyaadi){
	echo $dosyaadi."<br>";
	}

Ve sıralama böyle gözükecek.

Kitap1.xls
Kitap6.xls
Kitap10.xls
Kitap23.xls
Kitap62.xls

Sıralama farklılıklarına lütfen inceleyiniz ;)

Array_slice Fonksiyonu ile Dizileri Ayırma

Daha önce array_marge komutu ile dizilerimiz birleştirmeyi görmüştük.Array merge ile farklı dizileri tek dizi içine atmıştık.Şimdi ise bu işin tam tersini yani dizileri bölmeyi veya dizinin istediğimiz kısmını almayı göreceğiz.Bunu Array_slice() fonksiyonu ile yapacağız.
Array_slice() komutunu kullanırken parantez içinde kalan kısıma ilk önce dizi değişkeninin adını sonra bir virgül koyup diziyi kaçıncı elemandan itibaren böleceğimizi ve son olarakta bir virgül koyup bölmeye başladığımız elemandan itibaren toplam kaçtane eleman alacağımızı yazarız.
ÖRNEK KULLANIM:$dizi adlı değişkenin 3 nolu elemanından başlayıp 4 adet eleman al ve $degisken adlı değişkene kaydet diyeceğiz.

$degisken=array_silce($dizi,3,4);

Unutmamanız gereken bir nokta var hangi elemandan başlanacağını yazarken dizi elemanlarının “0″‘dan başladığını unutmayalım.Şimdi bir kod bloğu içinde gösterelim.
$ogrenciler adında bir dizimiz var ve biz bu dizide aslı ebru ayhan ve esrayı almak istiyoruz.Yani 0′dan saymaya başladığımızda bölmeye başlayacağımız eleman 3 nolu aslı oluyor.Aslı dahil toplam 4 eleman almak istiyorsak kodlarımız şu şekilde olacaktır.

1
2
3
4
5
$ogrenciler=array("Ali","Mehmet","Vural","Aslı","Ebru","Ayhan","Esra","Selma","Nurcan");
$secilenler=array_slice($ogrenciler,3,4);
foreach ($secilenler as $ogrenciadi){
     echo "$ogrenciadi<br>";
}

$secilenler adlı değişkenin içeriği Aslı,Ebru,Ayhan ve Esra olarak değişecektir.

Array_values Fonksiyonu

Daha önce öğrendiğimiz array_keys fonksiyonunu hatırlayacaksınız.Dizideki anahtarları alıp bir bir başka diziye atmıştık.Array_values komutu ile de dizideki anahtarları bırakıp sadece değerleri alabiliyoruz.
Geçen örnekte diziyi kullanıp bu sefer telefon markaları değilde fiyatlarını bir diziye aktaracağız.

1
2
$telefon=array("nokia"=>335,"Sony"=>250,"Samsung"=>200,"LG"=>250);
$degerler=array_values($telefon);

Array values fonksiyonu ile dizi içindeki fiyatları $degerler adlı diziye aktarılmış oldu.

Array_pop Fonksionu – Dizinin Son Elemanını Silme

Bir önceki dersimizde array_shift ile dizinin ilk elemanını değişken içine kaydırmış ve diziden ilk elemanı silmiş olduk.Şimdi ise dizinin son elemanını aynı mantıkla sileceğiz.Bunu için array_pop fonksiyonunu kullanacağız.Yine array_shift komutunda olduğu gibi silinen elemanı değişken içine atacaktır.
hemen bir önceki örneğimizi array_pop() fonksiyonu ile yapalım

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$dizi=array("Şafak","Bilişim","PHP","Dersleri");
foreach ($dizi as $kelime){
      echo "<b>";
      echo "$kelime&nbsp;";
      echo "</b>";
      }
	  echo "<br><br>";
$silinen_eleman=array_pop($dizi);
echo "Array Pop Kullanıldıktan sonra;<br><br>";
foreach ($dizi as $kelime){
      echo "<b>";
      echo "$kelime&nbsp;";
      echo "</b>";
      }
  	  echo "<br><br>";
echo "Diziden Silinen Kelime \"$silinen_eleman\".";

Array_shift ‘ teki mantık ile bu sefer array_pop fonksiyonun kullanarak dizinin son elemanını sildik.Çıktımız aşağıdaki gibi olacaktır.

Safak Bilisim PHP Dersleri
Array Shift Kullanildiktan sonra;
Safak Bilisim PHP 
Diziden Silinen Kelime "Dersleri".