Alfabetik Sıralama :ABCDEFGHIJKLMNOPQRSTUVWXYZ -


Dizi değişkenleri kullanalım

Yukarıdaki paragrafta "..değişkenin istediğimiz değerine, o değerin endeks adını yazarak, çağrıda bulunabiliriz.." dediğimizi görmüş olmalısınız. Dizi veya tekil, değişkenleri oluşturmamızın sebebi, tuttukları değerleri programımızın gereği olan şekilde ve yerde kullanmaktır. Sadece bir değer tutan değişkenleri örneğin print() komutu ile sık sık kullandık. Yukarıda dizi değişken örneklerinde de bazı değişkenleri ve değerlerini çağırdık. Ancak dizi değişkenlerin değerlerinden yararlanabilmek için başka araçlar da vardır.

Herşeyden önce dizi değişkenlerin büyüklüğü, boyutu bizim için önem taşıyabilir. Özellikle bir veritabanı dosyasını okutarak oluşturacağımız dizi değişkenin kaç elemanı ve her bir elemanın kaç ögesi bulunduğunu bilmemiz gerekebilir.

Bir dizi değişkenin kaç elemanı bulunduğu, o değişkenin count() özelliği sorgulanarak öğrenilir. count(), dizideki eleman sayısını verir. Şimdi bunu bir örnekle görelim. Daha önce kaydettiğimiz dizi_degiskenler04.php dosyasını açın ve PHP bölümünde şu değişikliği yaparak dizi_degiskenler06.php adıyla kaydedin:
php:

<?php

$ogrenciler[] = "Özbay";

$ogrenciler[] = "Muharrem";

$ogrenciler[] = "Hasan";

$ogrenciler[] = "Şahika";

// Buraya başka kodlar girecek

print ("$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var.");

?>

Bu program Browser penceresine dizimizde 4 eleman bulunduğunu bildirecektir. Şimdi işleri biraz karmaşık hale getirelim! Yukarıdaki kodun, print() satırının yerine şu satırları ekleyerek, dizi_degiskenler06a.php adıyla kaydelim.

php:

print ("$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var.");

print ("<br><br>");

for ($sayac=1 ; $sayac <= count($ogrenciler) ; $sayac++ ) {

print ("$ogrenciler dizisinin ". $sayac ."`ncı elemanı: " . $ogrenciler[$sayac] ."<br>");

}

Bu programı çalıştırmadan önce, eklediğimiz satırları irdeleyelim. İlk print() komutunun Browser penceresine "yazdıracağı" metinde geçen ters bölü işaretini hatırlıyor olmalısınız. Bu, tek veya çift tırnak içine de almış bile olsak, PHP`nin, bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazması sebebiyle, $ işareti gibi PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek için yaptığımız ve adına o karakteri kurtarma veya ESCaping dediğimiz işlemdir. Bu işlemle, PHP`nin anlamlı işaret değil de metin saymasını istediğimiz karakterlerin önüne ters bölü işareti koyarız: " gibi. Buradaki örnekte, bu sayede PHP "$ogrenciler" kelimesini değişken adı olarak değil, düz metin olarak görüyor. Ki, aynı komutta aynı kelimeyi tekrar kullandığımızda bu kez değişken adı olarak kullanıyoruz ve bu değişkenin count() ögesinin değerini öğreniyoruz. $ogrenci değişkenin "Özbay," "Muharrem," "Hasan" ve "Şahika" değerleri bulunduğuna göre, bu değişkenin count()`u 4 olacaktır. ("Ozbay" = 0, .. "Şahika" = 3 olmak üzere..) Bu print() komutu, Browser penceresine tahmin ettiğiniz gibi "$ogrenciler adlı dizide 4 adet eleman var." yazdıracaktır. İkinci print() satırı ise ekrana ardarda iki yeni satır işareti gönderecektir.

Şimdi karışık noktaya geliyoruz! Burada bir for döngüsü başlıyor. Önce döngünün kaç kez tekrar edeceğini belirleyecek olan değişkeni tanımlıyoruz: $sayac. Sonra bu sayacın kaça kadar çıkacağını belirliyoruz. Bu sayıyı, bize yine count() veriyor. Ve tabiî for döngüsünün devam edebilmesi için gerekli son unsur olan, sayacın arttırılmasını sağlayan deyim var. Programımız bu döngünün içinde, yani dört kez, her seferinde dizinin bir elemanın adını Browser penceresine gönderiyor. Şimdi, hatırlayacaksınız, dizi değişkenlerin elemanlarının bir sıra sayısı vardı. Örneğin "Şahika" değeri, dizinin 3 numaralı, yani dördüncü elemanı; ve bu elemanın değerini ekrana göndermek için şu komutu vermemiz yeterli:

print ($ogrenciler[4]);

Programda ise buradaki endeks sayısını, $sayac değişkeninin o andaki değerinden alıyoruz. Döngünün her seferinde bu değer bir artacağı için bize $ogrenciler değişkeninin o anda hangi elemanının değeri çağırmak istiyorsak, o elemanın endeksini vermiş olacaktır. Ve sonuç olarak programımız, dizideki bütün değerleri Browser`a gönderecektir.

Kimi zaman buradaki örnekte olduğu gibi, dizinin bütün elemanlarını bir for döngüsüyle değil, foreach döngüsüyle bulmak daha kolay olabilir. Kısaca belirtmek gerekirse, foreach döngüsü, bir dizi değişkenin bütün elemanları için, arzu ettiğiniz işi yapar. foreach döngüsünü yazarken komutun kaç kere icra edileceğini bir sayaçla tutmak gerekmez; çünkü döngü, ona adını verdiğiniz değişkenin içindeki bütün değerler bitinceye kadar devam edecektir. Yukarıdaki örnekteki bütün print() ve for satırlarını atarak yerine şunları yazıp ve dizi_degiskenler06b.php adıyla kaydelim.

php:

foreach ($ogrenciler as $ogrenci) {

print ("$ogrenci<br>");

}


foreach döngüsü, bir dizi değişkenin adını içinden değer çekilecek kaynak olarak ister; bunu "as" (olarak) kelimesi izler; sonra diziden alınacak her bir değeri geçici olarak tutacak değişkenin adı verilir. Buradaki print() komutumuz, bu geçici değişkenin tuttuğu değeri Browser`a gönöderecektir. Bu değer ise döngünün her adımında dizi değişkendeki bir değer yani öğrencilerin listesi olacaktır.

Dizi elemanlarının farklı özelliklerine ilişkin değerlere endeks adı verdiğimiz ilişkili dizilerde ise eleman değerlerini çağırmak foreach döngüsünün biraz farklı yazılmasını gerektirir. Perl`e aşina alanların bu dizi türüne "hash" dendiğini hatırlayacaklardır. PHP`de de Perl`ün hash türü değişkenlerinde olduğu gibi, endeks adlarına "anahtar" (key), bu endeksin belirlediği değere ise (evet, doğru tahmin ettiniz!) değer (value) denir. İlişkili dizilerden değer almak üzere foreach döngüsü yazılırken, değerin anahtarını ve değerin kendisini iki geçici değişkene yazmamız gerekir. Daha önce yazdığımız dizi_degiskenler05.php adlı dosyayı açarak mevcut tek satırlık print() kodunun yerine şunları yazın ve dizi_degiskenler07.php adıyla kaydedin:

php:

foreach ($ogrenciler as $anahtar=>$deger) {

print ("$anahtar = $deger<br>");

}

Bu kodu çalıştırmadan önce foreach döngüsü üzerinde kısaca duralım: döngü, $ogrenciler dizisini okumaya başladığında içinde, benzetme yerinde ise, iki sütun, ve bir çok satırlar bulacaktır. Bu sütunlardan birincisi, ikinci sütundaki verinin adıdır; foreach, birinci sütundaki veriyi alarak $anahtar adlı geçici değişkenin değeri olarak atayacak; sonra ikinci sütuna geçecek ve bunu alarak $deger adlı geçici değişkenin değeri yapacaktır. Döngü, daha sonra print() komutunu icra edecektir. print() ise ve geçici $anahtar değişkeninin değerini, ardından eşittir işaretini ve son olarak da geçici $deger değişkeninin değerini Browser`a gönderecektir. print() komutunun icrası bitince, foreach, kendisine verdiğimiz $ogrenciler değişkeninde anahtar-değer çiftini ele almadığı satır kalıp kalmadığına bakacak, ve elemanların tümü bitinceye kadar bu işlemi tekrar edecektir. Tabiî, sonuç anahtar ve değerlerin altalta sıralanması olacaktır.

Bir de bu bölümün en başında ele aldığımız çok elemanlı ilişkili diziler vardı. Onların içindeki değerleri acaba nasıl alabilir ve kullanabiliriz? Tabiî yine bir döngü ile. Fakat bu kez, döngü-içinde-döngü kullanmak zorundayız. Böyle bir diziyi gözümüzde canlandırırsak, belki neden iki döngüye ihtiyaç olduğununu daha iyi görebiliriz. Gözümüzün önüne bir tablo getirelim: dizinin her bir elemanı (bizim öğrenimizde öğrenciler9 bir satırda yer almış olsun; sütunlar olarak da bu elemana ait değerler yer alıyor. Sütun başlığı ise, bu değerin endeksi olan anahtar! Şimdi bu bölümün başında yazdığımız dizi_degiskenler0i.php adlı dosyayı açalım tek satırlık print() komutunun yerine şu satırları yazarak dizi_degiskenler08.php adıyla kaydedelim:

php:

foreach ( $ogrenciler as $ogrenci ) {

foreach ( $ogrenci as $anahtar => $deger ) {

print ("$anahtar = $deger <br> ");

}

print ("<br>");

}


Kısaca irdelersek, bu kodda foreach döngüsünün önce çok-boyutlu değişkenimizin bir satırını içindeki bütün anahtar+değer çeftleri ile ele alıp, tümünü $ogrenci adlı değişkene geçici olarak yerleştirdiğini görüyoruz. Bu foreach döngüsünün ilk işi yeni bir foreach döngüsü başlatmak oluyor. Yeni foreach ise sazı eline alır almaz, önce, kendisi çok ögeli bir değişken olan (çünkü içinde bir öğrenciye ait, tüm değişkenler ve onların endeks adları var) $ogrenci değişkeninin içindeki anahtar ve değer çiftlerini tek-tek, $anahtar ve $deger değişkenlerine yerleştiriyor; sonra print() komutu ile, aralarına eşittir işareti koyarak bu değişkenlerin değerlerini Browser penceresine gönderiyor. Bu döngü biter bitmez, ilk foreach yaptıracağı işlere kaldığı yerden devam ediyor; ve ekrana bir yeni satır komutu gönderierek, başa dönüyor; bu kez çok boyutlu dizi değişkenin yeni bir elemana geçiyor. Taa ki, dizinin bütün elemanları ve elemanların bütün ögeleri bitinceye kadar.

Bu noktada bir uyarı: Gerçek programda bir dizinin elemanlarına ilk ulaştığımızda, elemanın içinde değer bulunup bulunmadığını anlamak yerinde olur. Bunu is_array() fonksiyonu ile yapabiliriz. Bu fonksiyon, dizinin içinde değer varsa, True/Doğru, yoksa False/Yanlış karşılığını verecektir. Buradaki örnekte, ilk foreach satırından hemen sonra:

is_array( $ogrenci )

satırını koyarak, dizinin o anda okunan elemanın içinde değer bulunup bulunmadığını anlayabiliriz.


Konu: PHP De Dizi Değişkenleri Kullanma
 
Okunma Sayısı : 54
Eklenme Tarihi : 25 Ocak 2007, Perşembe
SONRAKI BILGI : Gökyüzü Neden Mavidir   
Forum Linki:
Aranan Kelime:
 

En Yeni Bilgiler


 PHP De Formlar Get Metodu PHP De Formlar Get Metodu
 PHP De While döngüsü PHP De While döngüsü
 PHP ve Tırnak İşareti PHP ve Tırnak İşareti
 PHP De Parola PHP De Parola
 PHP ve MySQL İlişkisi PHP ve MySQL İlişkisi
 Mysql Veri Türleri Mysql Veri Türleri
 PHP De sql_regcase() PHP De sql_regcase()
 PHP De split() PHP De split()
 PHP De ereg_replace() ve eregi_replace() PHP De ereg_replace() ve eregi_replace()
 PHP De ereg() ve eregi() PHP De ereg() ve eregi()
 PHP De Karakter Grupları PHP De Karakter Grupları
 PHP De Düzenli İfadelerde Özel Karakterler PHP De Düzenli İfadelerde Özel Karakterler
 PHP De Eşleştirme deyimleri ve işaretler PHP De Eşleştirme deyimleri ve işaretler
 PHP De chr() Düzenli İfadeler PHP De chr() Düzenli İfadeler
 PHP De Tarih ve Saat Düzenleme PHP De Tarih ve Saat Düzenleme
 PHP De number_format() Fonksiyonu PHP De number_format() Fonksiyonu
 PHP De printf() ve sprintf() PHP De printf() ve sprintf()
 PHP De strlen() Fonksiyonu PHP De strlen() Fonksiyonu
 PHP De chr() Fonksiyonu PHP De chr() Fonksiyonu
 PHP De trim() Fonksiyonu PHP De trim() Fonksiyonu
 PHP De Alfanümerik Fonksiyonlar PHP De Alfanümerik Fonksiyonlar
 PHP De Örnek Dosya İşlemi PHP De Örnek Dosya İşlemi
 PHP De Dizin Silme PHP De Dizin Silme
 PHP De Dizin Oluşturma PHP De Dizin Oluşturma
 PHP De Dosya Kilitleeme PHP De Dosya Kilitleeme
 PHP De Dosyaya yazma ve ek yapma PHP De Dosyaya yazma ve ek yapma
 PHP De fseek() ile ölçü belirleme PHP De fseek() ile ölçü belirleme
 PHP De Dosya Okuma PHP De Dosya Okuma
 PHP De Fonkisyon Durdurma PHP De Fonkisyon Durdurma
 PHP De Dosya açma PHP De Dosya açma
 PHP De Dosyalar oluşturma ve silme PHP De Dosyalar oluşturma ve silme
 PHP De Dosyaya son erişim tarih PHP De Dosyaya son erişim tarih
 PHP De Dosya Boyutu PHP De Dosya Boyutu
 PHP De is_executable() PHP De is_executable()
 PHP De is_writable() PHP De is_writable()
 PHP De is_readable() PHP De is_readable()
 PHP De is_file() ve is_dir() PHP De is_file() ve is_dir()
 PHP De Dosya Kontrolü PHP De Dosya Kontrolü
 PHP De include ve require PHP De include ve require
 PHP De Dosya Ekleme (include) PHP De Dosya Ekleme (include)
 PHP De Dosya Yükleme PHP De Dosya Yükleme
 PHP De Formlar ve İşlemci PHP De Formlar ve İşlemci
 PHP De Formlar Post Metodu PHP De Formlar Post Metodu
 PHP De URL Kodları PHP De URL Kodları
 PHP De Formlar PHP De Formlar
 PHP De Nesne Oluşturma PHP De Nesne Oluşturma
 PHP De Nesneler PHP De Nesneler
 PHP De Dizileri sıralama PHP De Dizileri sıralama
 PHP De Diziden kesit alma PHP De Diziden kesit alma
 PHP De Dizinin ilk elemanını silme PHP De Dizinin ilk elemanını silme
 PHP De Dizilere değişken ekleme PHP De Dizilere değişken ekleme
 PHP De Dizi Değişkenlerin Düzenlenmesi PHP De Dizi Değişkenlerin Düzenlenmesi
 PHP De Dizi Değişkenleri Kullanma PHP De Dizi Değişkenleri Kullanma
 PHP De Dizi Değişken Oluşturma PHP De Dizi Değişken Oluşturma
 PHP De Dizi Değişkenleri PHP De Dizi Değişkenleri
 PHP De Değişken Kapsamı PHP De Değişken Kapsamı
 PHP De Fonksiyonlara Değer Verme PHP De Fonksiyonlara Değer Verme
 PHP De Fonksiyonlar PHP De Fonksiyonlar
 PHP De Continue PHP De Continue
 PHP De Breack PHP De Breack
 PHP De foreach döngüsü PHP De foreach döngüsü
 PHP De For Döngüsü PHP De For Döngüsü
 PHP DE do..while PHP DE do..while
 PHP ve Switch PHP ve Switch
 PHP ve if - else - ifelse PHP ve if - else - ifelse
 PHP ve Tarih Saat PHP ve Tarih Saat
 PHP ve Sabit Değerler PHP ve Sabit Değerler
 PHP De Azaltma ve Arttırma PHP De Azaltma ve Arttırma
 PHP De Dört İşlem PHP De Dört İşlem
 PHP Deki Dört Yararlı Fonksiyon PHP Deki Dört Yararlı Fonksiyon
 PHP De Boşluklar PHP De Boşluklar
 PHP ve Fonksiyonlar PHP ve Fonksiyonlar
 PHP ve Tür Değiştirme PHP ve Tür Değiştirme
 PHP ve Veri Türleri PHP ve Veri Türleri
 PHP`de Değişkenler PHP`de Değişkenler
 Windows`da MySQL Windows`da MySQL
 Windows`da Apache Windows`da Apache
 PWS 4.0 PWS 4.0
 Browser Yetenek Dosyası Browser Yetenek Dosyası
 IIS 4.0 ve 5.0 IIS 4.0 ve 5.0
 Windows-PWS ve IIS Windows-PWS ve IIS
 Güvenli socket ve Internet Erişimi Katmanı Güvenli socket ve Internet Erişimi Katmanı
 Linux`ta program derlediniz mi? Linux`ta program derlediniz mi?
 Unix - Linux Sistemleri Unix - Linux Sistemleri
 PHP ve Web Sunucusu PHP ve Web Sunucusu
 PHP ve Veritabanı PHP ve Veritabanı
 PHP`ye Giriş PHP`ye Giriş
 MD5 ile Şifreleme MD5 ile Şifreleme
 

 

 

Copyright © 2008 Temha.neT