Php ve Diziler

Tarih: Mayıs 30th, 2009 | Yazar: | Kategori: Php | Etiketler: , , , , , , , , , , , | Yorum yok »

Merhaba arkadaşlar. Bugün sizlere Php’ de diziler konusunu anlatacağım. Çok az olan normal derslerimden biri olacak bu. Dersi yazma amacım bir aradaşımın istediğiydi fakat ona da buradan teşekkür ediyorum çünkü diziler konusu aslında en çok takınılan yerlerden birisi. Birazdan bütün yapısı ve fonksiyonlarını tek tek göreceğiz.

Arkadaşlar diziler aslında çok basit. Matematikte ardışık sayılar gibi; tek bir değişken üzerinde 0′ dan başlayarak veriler sıralanıyor. Hatta bütün değişkenler aynı zamanda birer dizidir. Birazdan göstereceğim zaten. Bir kelime taşıyan değişken tek tek harfleri bünyesinde barındırır. Bu sayede daha mantıklı bir yapı oluşur…

Arkadaşlar yukarıda verdiğim örneği kanıtlamak gerekirse;

<?php $yazi = "selam"; echo $yazi[0] //s yazdırır
?>

Yukarıda ki örnekte gördüğünüz gibi bütün düzenli ifadelerin temeli dizilere dayanır. İşte dizilerimizi de adına yakışır şekilde kullanmamız gerekirse aşağıdaki gibi bir dizi oluşturabiliriz;

<?php $dizi = array("veri1","veri2","veri3"...."verin"); ?>

Gördüğünüz gibi array( dedikten sonra verilerimiz geliyor. Yukarıda ki dizinin şeması şöyle;

Array {
[0] => "veri1";
[1] => "veri2";
[n] => "verin";
}

Burada istediğimiz kadar veri tanımlaması yapabiliriz. Peki arkadaşlar bu verileri nasıl yazdırırız?

Bunun için iki yöntem var. Birinci $dizi[SAYİ] şeklinde olduğu için for döngüsü kuracağız. Diğeri ise diziler için yapılmış bir fonksiyon olan foreach kullanacağız. Arkadaşlar her zaman için foreach kullanmanızı tavsiye ediyorum. Tarafımdan yapılan performans testlerinde foreach’ in for’ dan kat kat hızlı olduğunu gözlemledim. Neyse efendim;

For döngüsü ile yazdıralım;

<?php for($i=0; $i<count($dizi); $i++) {
echo $dizi[$i];
}

Burada $i değeri sürekli 1 değer arttığı için hep bir üstteki verinin değerine eşit olacaktır. Bu sayede de gerekli veri artacaktır. Fakat for döngüsü bütün döngülerin arasındaki en çok kasan döngüdür. Bunun yerine diziler için yapılmış olan foreach var;

<?php foreach($dizi as $veri) {
echo $veri;
}

Burada ise foreach kendini 0 a eşitliyor ve tek tek $veriye atıyor. Yani şöyle $dizi[0] = $veri , $dizi[1] = $veri. Kısaca $dizi kendini düzenli ifadeye eşitleyip normal hale getiriyor. Burada kadar hiçbir problem yoksa;

Arkadaşlar bazen dizilerimizi boyutlu yapmak isteriz. Yani veri1 aynı zaman da “1numara” ya eşitli olabilir. İşte bunun gibi durumlar için values yani değerler kullanılır. Her dizinin elemanı birer değeridir. Eğer ki bu değerlere anahtar atamak istersek;

<?php $dizi = array("veri1"=>"1numara","veri2"=>"2numara",
       "veri3"=>"3numara"...."verin"=>"nnumara"); ?>

Gördüğünüz gibi hepsi tek tek eşitlendi. Bu sayede bir verinin iki değeri olmuş oldu. Yani bir değişkene iki tane veri ekledik. Peki arkadaşlar bunun yapısı nasıl?

Array {
[veri1] => "1numara";
[veri2] => "2numara";
[veri3] => "nnumara";
}

Gördüğünüz gibi sayısal değerler kendini “bizim” atadığımız değerlere bıraktı. Arkadaşlar dediğim gibi dizimiz iki boyutlu hale geldi. Birincisi değer; ikincisi ise anahtarı. Peki bunu nasıl yazdırıcaz?

<?php foreach($dizi as $veri=>$deger) {
echo $veri;
echo $deger;
}

Bu seferde değer için ve değeri için iki ayrı değişken belirttik.Arkadaşlar bunlar normal tanımlamalar. Peki nasıl elle dizi tanımlarız;

<?php $dizi[0] = "veri1"; $dizi[1]="veri2" ?>

Diyerek de tanımlayabiliriz fakat ben bunu önermiyorum. Çünkü tek tek sıra belirterek tanımlamak uzun zaman alabiliriz. Sıralama işlerimimini dizilere bırakmak daha akıllıca;

<?php $dizi[] = "veri1"; $dizi[]="veri2" ?>

Gördüğünüz gibi bu kodda üsttekinin işlemini yapacaktır…

İşte gördüğünüz gibi boyutlu-boyutsuz dizi tanımlama ve yazdırma böyle. Peki diğer dizi fonksiyonları nelerdir?

  • array_values(): Dizideki bütün değerleri alır ve yine dizi şeklinde saklar.
  • array_keys(): Dizideki bütün anahtarları alır ve yine dizi şeklinde saklar.
  • array_merge(): İki veya daha fazla diziyi tek dizi halinde birleştirir.
  • array_pop(): Dizi sonundaki elemanı çıkarır.
  • array_push(): Dizi sonuna eleman ekler.
  • array_diff(): Verilen dizilerdeki farklı elemanı bulur.
  • array_reverse(): Diziyi tersine sıralar.
  • array_search(): Dizide değer arar.
  • array_shift(): Dizi başlangıcındaki elemanı uçurur.
  • array_unshift(): Dizi başlangıcına eleman ekler.
  • arsort(): Bir dizinin değerlerini anahtarlarıyla ilişkilerini bozmadan tersine sıralar.
  • asort(): Bir dizinin değerlerini anahtarlarıyla ilişkilerini bozmadan sıralar.
  • count(): Dizideki eleman sayısını bulur.
  • ksort(): Diziyi anahtarlarına göre sıralar.

Evet arkadaşlar bu kadar biliyorum toplamda bende. Zaten diğerleri aşırı profesyonel kaçıyor. Fazla da gereksinim duyulmuyor. Önemli olan dizilerin yapısını ve yazdırılmasını anlamak…

NOT: Eğer ki bir dizinin yapısını anlamak istiyorsanız;

<?php print_r($dizi) ?>

Diyebilirsiniz…

Şimdilik herkese iyi günler, iyi çalışmalar…




Benzer Yazılar;

coded by nessus

Ahkam Kesme Aparatı

  • *