Sehri-Paylasim
Hosgeldiniz
Sehri-Paylasim
Hosgeldiniz
Sehri-Paylasim
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Sehri-Paylasim


 
AnasayfaAramaLatest imagesKayıt OlGiriş yap
Giriş yap
Kullanıcı Adı:
Şifre:
Beni hatırla: 
:: Şifremi unuttum
En iyi yollayıcılar
Admin
Dizi değişkenleri kullanalım Vote_lcapDizi değişkenleri kullanalım Voting_barDizi değişkenleri kullanalım Vote_rcap 
daba31
Dizi değişkenleri kullanalım Vote_lcapDizi değişkenleri kullanalım Voting_barDizi değişkenleri kullanalım Vote_rcap 
hidelgo41
Dizi değişkenleri kullanalım Vote_lcapDizi değişkenleri kullanalım Voting_barDizi değişkenleri kullanalım Vote_rcap 

 

 Dizi değişkenleri kullanalım

Aşağa gitmek 
YazarMesaj
Admin
Kurucu / Root
Admin


Mesaj Sayısı : 552
Kayıt tarihi : 09/07/10
Yaş : 41
Nerden : Bursa

Dizi değişkenleri kullanalım Empty
MesajKonu: Dizi değişkenleri kullanalım   Dizi değişkenleri kullanalım EmptyC.tesi Eyl. 24, 2011 8:05 am

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
$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.
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.
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:
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:
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 )
Sayfa başına dön Aşağa gitmek
https://sehripaylasim.yetkin-forum.com
 
Dizi değişkenleri kullanalım
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Sehri-Paylasim  :: Forum :: HTML, PHP, ASP, PERL-
Buraya geçin: