|
Dizi-Değişkenler, Nesneler
PHP'de, diğer programlama dillerinde
olduğu gibi, kullandığımız bilgileri, verileri değişken adını verdiğimiz
kaplarda tuttuğumuzu biliyoruz. Bu kaplarla ne işler yapabileceğimizi de
gördük. Fakat bu kapların sadece bir birim bilgi tuttuğunu farketmiş
olmalısınız. Oysa programlarımızda genellikle, sözgelimi "öğrencilerin
adları" dediğimiz zaman yüzlerce ismi tutabilen kaplara ihtiyacımız
olur. Aksi taktirde, öğrenci sayısı kadar değişken oluşturmamız gerekir
ki, bu durumda değişken oluşturma zahmetinden vazgeçmek daha uygun olur;
öğrencilerin isimleri, değişkene koymadan da kullanabiliriz. İşte, bu
tür, bir grup bilgili topluca tutan değişkenlere dizi-değişken (array)
denir; ve program boyunca işe yarayan değişken türü de budur.
PHP'nin diğer bir çok dilden farkını
sağlayan bir özelliği, büyük ölçüde dizi değişkenlere dayanan, içinde
kendi değişkenleri ve kendi fonksiyonları olan nesne (object) oluşturma
imkanına sahip bulunmasıdır. Bu açıdan PHP, nesne-yönelimli (Object-oriented)
diller grubuna girer. Nesne oluşturmak ve kullanmak, bu yönteme alışık
olmayan programcılar için önceleri çok zor görünür. Ancak bir kere nesne
ile programlamanın özünü kavrayanların bir daha kolay kolay nesne
fikrinden vazgeçtikleri de görülmemiştir.
Dizi değişkenden ayrıntılı söz edebilmek
için önce tipik bir dizi-değişkende neler olduğuna bakalım. Sözgelimi,
verdiğiniz "PHP ile Programlama" kursundaki öğrencilerinizin listesi
şöyle olabilir:
Öğrenci No
Adı Soyadı Sınav-1
Sınav-2 Not
1 Özbay
Altun .. .. ..
2
Muharrem Taç ..
.. ..
3
Erhan Mataracı ..
.. ..
4
Hasan Civelek ..
.. ..
5
Şahika Tabak ..
.. ..
Şimdi, PHP bize öyle bir araç vermeli ki,
biz bir kerede bu listenin tümünü, her bir ögesine sanki bir değişkenin
değeri imiş gibi tek-tek, veya bir kaçına birden ulaşabilmeli ve arzu
ettiğimiz zaman notları doldurabilmeliyiz. Öğrenciler de yapacağımız Web
sitesine girerek, kendi notlarını görebilmeli ve notlarını
inceleyebilmeli. PHP'nin bu amaçla sağladığı araç, çok-boyutlu
dizi-değişken oluşturma aracıdır. Ve bu araçla yukarıdaki listeyi aynen
şöyle yapabiliriz. Bu kodu dizi_degiskenler01.php adıyla
kaydedin:
<HTML>
<HEAD>
<TITLE>PHP'de Degiskenler</TITLE>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
$ogrenciler = array (
array ( adi => "Özbay", soyadi => "Altun",
sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Muharrem", soyadi =>
"Taç", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Hasan", soyadi =>
"Civelek", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Şahika", soyadi =>
"Tabak", sinav1 =>"", sinav2 =>"", not =>""),
);
// Buraya başka kodlar girecek
print $ogrenciler[0][adi];
?>
</H2>
</B>
</BODY>
</HTML>
Programdaki "print()" komutunu sadece dizi
değişkeni doğru yazıp yazmadığımızı sınamak amacıyla yazdık; bu programı
Browser'da açtığınızda yazdığınız ilk ismi Browser penceresinde
görüyorsanız, dizi-değişkeni doğru şekilde oluşturdunuz demektir.
Burada, array() komutnu yazarken, süslü parantez değil, normal parantez
kullandığımıza ve herbir elemanın değerlerinin sonunda vrigül olduğuna
dikkat edir. Bir diğer önemli nokta: endeks adları bir kelimeden fazla
ise bunları tırnak içine alarak belirtmektir. Örneğin:
array ( adi => "Özbay", soyadi => "Altun",
"Sinav 1 Notları" =>"", "Sinav 2 Notları" =>"", "Toplam Not Ortalamasi"
=>""),
Burada, daha öncekilere benzer bir şekilde
adlandırılmış $ogrenciler değişkenin içeriğini array() komutu ile
doldurduğumuzu görüyoruz. Array() ile böyle çok boyutlu ve içerdiği
değerlerin her birinin bir "endeks adı" olan dizi-değişkene İlişkili
Dizi (Associative array) de denir. Perl bilenler ise bu tür
değişkenlere "Hash" dendiğini hatırlayacaklardır. İlişkili Dizi'lerin
birinci satırı 0, ikinci satırı 1, üçüncü satırı 2.. diye
numaralandırılır. Bu dizinin o satırındaki kaydın sıra endeksidir.
Ayrıca burada "adi," "soyadi," "sinav1" .. dizi değişkenin içindeki
değerlerin endeks adıdır. Yani bu değerlere atıfta bulunurken, referans
yaparken veya bu değerleriekullanmak amacıyla erişirken sıra endeksi ve
endeks adıyla hitabederiz. Yukarıdaki sınama amaçlı print()
komutuna bakarsanız, birinci öğrencinin ismini "[0][adi]" olarak
çağırıyor.
Çok elemanlı ilişkili dizi oluşturmanın
bir diğer yolu, yeri geldiğinde böyle bir dizi için yeni bir üye ilgili
bilgileri eleman endeksi ve değerler için endeks adı belirterek şöyle
bir kod yazmaktan ibarettir. dizi_degiskenler01.php dosyasında şu
değişikliği yaparak, dizi_degiskenler02.php adıyla kaydedin
<?php
$ogrenciler[0][adi] = "Özbay";
$ogrenciler[0][soyadi] =
"Altun";
$ogrenciler[0][sinav1] =
"";
$ogrenciler[0][sinav2] =
"";
$ogrenciler[0][not] =
"";
// Buraya Buraya başka kodlar girecek
print $ogrenciler[0][adi];
?>
Bir dizi değişkende kaç boyut olacaksa, o
kadar içiçe array() ögesi oluşturabiliriz. Buna göre tek boyutlu
bir dizi değişken sadece bir array() komutu ile ve sadece
değerler verilerek oluşturulabilir. Diyelim ki yukarıdaki öğrenci
listemiz sadece öğrencilerin isimlerinden oluşacak. Bu durumda $ogrenciler
değişkenine ilişkin satırı şöyle yazabilirdik:
$ogrenciler = array ("Özbay", "Muharrem",
"Hasan", "Şahika");
PHP, böyle tek boyutlu bir dizinin örneğin
birinci elemanını, "$ogrenciler[0]" adıyla bilir. Böyle bir tek-boyutlu
diziyi oluşturmak için PHP bize başka bir kolaylık da sağlar: array()
komutunu kullanmadan, doğruca dizinin ögelerine değer vermemiz
mümkündür. Yukarıdaki programın sadece PHP bölümünü şöyle değiştirerek,
dizi_degiskenler03.php adıyla kaydedin:
<?php
$ogrenciler[] = "Özbay";
$ogrenciler[] =
"Muharrem";
$ogrenciler[] = "Hasan";
$ogrenciler[] =
"Şahika";
// Buraya başka kodlar girecek
print $ogrenciler[0];
?>
Böyle sırayla dizi değişken oluşturur veya
oluşturulmuş bir dizi değişkene ek yaparken, değişkenin sıra numarasını
yazmazsak, PHP bunları kendisi sıralar. Yukarıdaki kodun da Browser
penceresine "Özbay" yazdırması gerekir. Mevcut tek-boyutlu bir dizi
değişkene ek yaptığımızda, be yeni değerin dizinin en altına eklenmesini
istiyorsak, sıra numarası yazmamıza gerek yoktur. Mevcut değerlerden
birini değiştirmek istiyorsak, o değerin sıra numarasını yazmamız
gerekir. Bunu denemek için yukarıdaki kodu şöyle değiştirilim ve
dizi_degiskenler04.php adıyla kaydedelim:
<?php
$ogrenciler[] = "Özbay";
$ogrenciler[] =
"Muharrem";
$ogrenciler[] = "Hasan";
$ogrenciler[] =
"Şahika";
// Buraya başka kodlar girecek
$ogrenciler[0] = "Emre";
$ogrenciler[15] = "Özbay";
print ("Dizideki 1'nci isim: $ogrenciler[0]
<br>");
print ("Dizideki 2'nci isim: $ogrenciler[1]
<br>");
print ("Dizideki 3'ünci isim:
$ogrenciler[2] <br>");
print ("Dizideki 4'üncü isim:
$ogrenciler[3] <br>");
print ("Dizideki 5'inci isim:
$ogrenciler[4] <br>");
print ("Dizideki 6'ncı isim: $ogrenciler[5]
<br>");
print ("..............<br>");
print ("Dizideki 15'nci isim:
$ogrenciler[15] <br>");
?>
Bu programın Browser penceresine
göndereceği sırada, birinci öğrenci ($ogrenci[0]) olarak bu kez Özbay
değil Emre yazdığını göreceğiz.
<php00017.tif>
Bunun sebebi, diziyi oluşturan ilk grup
deyimden sonra,
$ogrenciler[0] = "Emre";
satırı ile birinci elemanın değerini
değiştirmiş olduk. 15'nci elemana atama yapmakla, PHP'nin $ogrenciler
dizisinde 6, 7, 8, 9,.. 14'e kadar boş elemanlar oluşturmasına sebep
olduk.
Tek boyutlu dizileri de İlişkili Dizi
olarak oluşturabilir yani değerlere endeks adı verebiliriz. Daha önce
kaydettiğimiz dosyada şu değişikliği yapalım ve dizi_degiskenler05.php
adıyla kaydedelim:
<?php
$ogrenci[adi] = "Özbay";
$ogrenci[soyadi] = "Altun";
$ogrenci[sinav1] = "";
$ogrenci[sinav2] = "";
$ogrenci[not] = "";
// Buraya başka kodlar girecek
print $ogrenci[adi];
?>
PHP, $ogrenci adlı değişkenin beş ayrı
değeri olduğunu ve bunların "adi," "soyadi," "sinav1"... olduğunu
biliyor. Şimdi artık istediğimiz noktada bu değişkenin istediğimiz
değerine, o değerin endeks adını yazarak, çağrıda bulunabiliriz; bu
değeri yeniden verebiliriz.
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.
<php00018.tif>
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.
<php00019.tif>
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.
<php00020.tif>
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.
Dizi değişkenlerin daha verimli şekilde
kullanılması için PHP bize bir takım araçlar sağlar. Bunlarla dizi
değişkenleri birleştirebiliriz; içinden kesit alabiliriz,
sıralayabiliriz veya bazı elemanlarını silebiliriz. Şimdi kısaca bu
işlemleri ele alalım:
İki veya daha fazla dizinin bütün
elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır. Örnek:
$birinci_dizi = array ( "Özbay" ,
"Muharrem" , "Hasan" , "Şahika" );
$ikinci_dizi = array ( "Altun" , "Taç" ,
"Civelek" , "Tabak" );
$yeni_dizi = array_merge ( $birinci_dizi,
$ikinci_dizi );
Bu kod ile oluşturulan $yeni_dizi isimli
dizi değişkenin hangi elemanlara sahip olduğunu, şöyle bir kodla
görebilirsiniz:
foreach ( $yeni_dizi as $yeni_eleman ) {
print (" $yeni_eleman <br>");
}
İkinci dizinin bütün elemanları, birinci
dizinin elemanlarının arkasına eklenmiş olmalı. array_merge()
işlemi, çok-boyutlu ilişkili dizilere de uygulanabilir; PHP iki dizideki
uyumlu-uyumsuz, yani birinde olan diğerinde olmayan bütün anahtar+değer
çiftlerini yeni dizide de oluştur. (array_merge() işleminden
sonra birleştirilen dizilerin değişmeden kaldığına dikkat edin.)
Bir diziye yeni değişkenler eklemek için,
array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri
yazarız. Örnek:
$birinci_dizi = array ( "Özbay" ,
"Muharrem" , "Hasan" , "Şahika" );
$yeni = array_push ($birinci_dizi, "Altun"
, "Taç" , "Civelek" , "Tabak" );
Burada $yeni adlı değişken sadece
$birinci_dizi adlı dizinin yeni eleman sayısını tutar. array_push(),
kendisine adını verdiğimiz dizinin içeriğini değiştirir. Yukarıdaki
örnekte içine yeni değerler yazılan dizinin elemanlarını görüntülemek
için şöyle bir kod yazabiliriz:
print ("\$birinci_dizi adlı dizide
$yeni_dizi adet değişken var<br>");
foreach ( $birinci_dizi as $ogrenci ) {
print ("$ogrenci <br> ");
}
Bir dizi-değişkenin ilk elemanını tümüyle
silmek için array_shift() fonksiyonunu kullanırız. Bu fonksiyona sadece
birinci elemanı silinecek dizinin adını vermek yeter. Örnek:
$birinci_dizi = array ( "Özbay" ,
"Muharrem" , "Hasan" , "Şahika" );
$silinen = array_shift ($birinci_dizi);
array_shift(), adını verdiğiniz
dizinin içeriğini değiştirir; buradaki örnekte, $silinen adlı değişken
dizinin silinen birinci elemanın değerini tutar.
Bir dizi-değişkenin bütün elemanları
yerine bir kesitini kullanmak istiyorsak, bunu array_slice()
fonksiyonu ile yapabiliriz. Bu fonksiyona kesit alınacak dizinin adı,
kesitin başladığı yer ve kaç adet değişken alınacağı argüman olarak
verilir. Örnek
$birinci_dizi = array ( "Özbay" ,
"Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak");
$kesit = array_slice ($birinci_dizi , 3,
4);
Burada, PHP'ye $kesit adlı yeni dizi
değişkene, $birinci_dizi adlı dizinin 3'ncü değerinden itibaren (3
dahil) dört değeri yerleştirmesini bildiriyoruz. array_slice(),
adını verdiğimiz değişkenin içeriğine dokunmaz; yeni dizi değişken
oluşturulur.
Bir dizinin içindeki değerleri alfabetik
veya küçükten büyüğe doğru sıralamak için sort() fonksiyonunu
kullanırız. Örnek:
$birinci_dizi = array ( "Özbay" ,
"Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak");
sort ($birinci_dizi);
PHP, dizideki bütün değerleri A'dan Z'ye
sıraya sokacaktır. sort() fonksiyonu dizinin içeğini değiştirir.
Bir diziyi Z'den A'ya veya büyükten küçüğe doğru sıralamak için de
rsort() fonksiyonunu kullanabilirsiniz. (PHP4.0 Türkçe karakterleri
tanımıyor.) Bir noktada dikkatli olmak gerekir: bu fonksiyonu ilişkili
(değerlerin anahtarı olarak endeks adı bulunan) dizide kullanırsanız,
PHP, anahtar değerlerini (endeks adlarını) atar, yerine 0'dan itibaren
rakam koyar. Bunu önlemek için, ilişkili dizileri asort() veya ksort()
fonksiyonu ile sıralamak gerekir.
İlişkili dizilerin diğer dizi değişkenlere
göre farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına
anahtar denir. Bir ilişkili diziyi değerlerine göre sıralamak için asort()
fonksiyonu kullanılır. Örnek:
$birinci_dizi = array ( ogr_01=>"Özbay",
ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
asort ($birinci_dizi);
PHP, bu diziyi değerler itibariyle
alfabetik sıraya sokacaktır. Eğer sıranın değere göre değil de
değerlerin anahtarına (burada ogr_01, ogr_02 olan kelimeler) göre
yapılmasını istiyorsak, ksort() fonksiyonunu kullanırız. Örnek:
$birinci_dizi = array ( ogr_01=>"Özbay",
ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika");
ksort ($birinci_dizi);
PHP, şimdi bu diziyi anahtarlara göre
alfabetik sıraya sokacaktır.
|