Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!
PHP ,sunucu tarafli calisan,dinamik ve interaktif website hazirlama konusunda cok guclu bir dildir.PHP cok yaygin olarak kullanilan,ucretsiz ve MICROSOFTun ASP sine alternatif olabilen bir teknolojidir.Web uygulamalari icin tam uyumludur ve HTML Kodlarinin icine direkt olarak adabte edilebilir.
PHP yazim dizini(syntax) bakimindan Perl ve C dilleriyle buyuk benzerliklere sahiptir.Cogunlukla PHP Apache(web sunucusu) ile birlikte bircok farkli isletim sisteminde kullanilabilir.PHP ayni zamanda ISAPI ve MICROSOFT IIS destekleyerek Windows ortaminda da kullanilabilir.Bir PHP dosyasi text,HTML taglari ve scriptler icerebilir.Dosyadaki scriptler server da yorumlanir.
Ne Ogrenmeniz Gerekiyor?
Baslamadan once asagidaki konulara hakim olmanizi oneririz.
HTML / XHTML
Script Bilgisi
PHP Nedir?
PHP (Personel Home Page) Kisisel Web Sayfasi
PHP , ASP gibi server-tarafli dildir.,
PHP Server tarafindan yorumlanir
PHP cesitli databaseleri destekler (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
PHP Acik kaynakli bir dildir(OSS)
PHP kullanimi ucretsizdir
PHP Dosyasi Nedir?
PHP dosyasi, HTML taglari and script icerir
PHP tarayicilara HTML gorunumlu olarak doner
PHP .php, .php3″, or .phtml uzantilar ile tarif edilir.
MySQL Nedir?
MySQL veritabani saglayicisidir.
MySQL kucuk ve buyuk uygulamalarin her ikisi icinde uygundur
MySQL standart SQL i destekler
MySQL sayilardan olusan bir platforda derlenir
MySQL kullanimi ucretsizdir
PHP + MySQL
PHP , MySQL ile tam uyumlu bir dildir.farkli isletim sistemlerinde yorumlanabilir(Windows sisteminde olusturulabilir ve Unix sisteminde sunulabilir.
Neden PHP?
PHP farkli platformlarda kullanilabilir(Windows, Linux, Unix, etc.)
PHP butun serverlara uyumlu haldedir(Apache, IIS, etc.)
PHP resmi sitesi :
PHP ogrenimi kolaydir
Nasil Baslanir ?
Bilgisayariniza Apache Web Serverini kurun
Bilgisayariniza PHP servisini yukleyin
Bilgisayariniza MySQL i yukleyin.
Ilk 3 maddeyi gormezlikten gelip , Apache2Triad veya benzerlerini kullanabilirsiniz.
PHP yazim dizini(syntax) bakimindan Perl ve C dilleriyle buyuk benzerliklere sahiptir.Cogunlukla PHP Apache(web sunucusu) ile birlikte bircok farkli isletim sisteminde kullanilabilir.PHP ayni zamanda ISAPI ve MICROSOFT IIS destekleyerek Windows ortaminda da kullanilabilir.Bir PHP dosyasi text,HTML taglari ve scriptler icerebilir.Dosyadaki scriptler server da yorumlanir.
Ne Ogrenmeniz Gerekiyor?
Baslamadan once asagidaki konulara hakim olmanizi oneririz.
HTML / XHTML
Script Bilgisi
PHP Nedir?
PHP (Personel Home Page) Kisisel Web Sayfasi
PHP , ASP gibi server-tarafli dildir.,
PHP Server tarafindan yorumlanir
PHP cesitli databaseleri destekler (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
PHP Acik kaynakli bir dildir(OSS)
PHP kullanimi ucretsizdir
PHP Dosyasi Nedir?
PHP dosyasi, HTML taglari and script icerir
PHP tarayicilara HTML gorunumlu olarak doner
PHP .php, .php3″, or .phtml uzantilar ile tarif edilir.
MySQL Nedir?
MySQL veritabani saglayicisidir.
MySQL kucuk ve buyuk uygulamalarin her ikisi icinde uygundur
MySQL standart SQL i destekler
MySQL sayilardan olusan bir platforda derlenir
MySQL kullanimi ucretsizdir
PHP + MySQL
PHP , MySQL ile tam uyumlu bir dildir.farkli isletim sistemlerinde yorumlanabilir(Windows sisteminde olusturulabilir ve Unix sisteminde sunulabilir.
Neden PHP?
PHP farkli platformlarda kullanilabilir(Windows, Linux, Unix, etc.)
PHP butun serverlara uyumlu haldedir(Apache, IIS, etc.)
PHP resmi sitesi :
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
den ucretsiz olarak yuklenebilir ve kullanilabilirPHP ogrenimi kolaydir
Nasil Baslanir ?
Bilgisayariniza Apache Web Serverini kurun
Bilgisayariniza PHP servisini yukleyin
Bilgisayariniza MySQL i yukleyin.
Ilk 3 maddeyi gormezlikten gelip , Apache2Triad veya benzerlerini kullanabilirsiniz.
PHP Yazım Kuralları
PHP scriptleri her zaman <?php anahtarıyla açılır ve ?>.anahtar dizimyle son bulur. Bu script arasında kalan bütün kodlar sunucu tarafından PHP scripti olarak yorumlanır ver derlenir.PHP kod bloğu dosyanızın her yerinde bulunabilir.Önemli olan <?php ve ?> anahtarları doğru biçimde tanımlansın. Kısayol için PHP kodları <? ve ?> şeklinde açıp kapatılarak da sunucu tarafından yorumlanabilir.
Bir PHP dosyası bildiğimiz HTML tagları ve PHP scriptlerinden oluşur. Adet olduğu üzere PHP kodlarımıza Merhaba Dünya (Hello World) diyerek başlayalım.Dosyamız yorumlandıktan sonra tarayıcımızdan Merhaba Dünya mesajını görelim:
Her Php kod satırı ; -(noktalıvirgül) ile bitmesi gerekir.Noktalı virgül bir PHP kodundan ,başka bir koda geçildiğini ifader eder. PHP ile çıktı ( output ) işlemlerini iki durumda gerçekleştirebiliriz: echo ve print.
PHPde Yorum Satırları
PHP kodlarımızda ,dili C dilinden de hatırlayacağınız üzere , tek satırlar için // , geniş yorum blokları için /* . */ yorum anahtarlarını kullanırız.
Internet tarayıcınızda açtığınız web sayfasında herhangi bir php sayfasında ,View Source-Kaynağı Görüntüle seçeneğiyle bir PHP dosyasını tamamen izleyemezsiniz.Kaynak kodlarında yanlızca HTML formatında kod dizini görebilirsiniz.Bunun sebebi,sunucunun php dosyasını yorumlar ve çıktısını yayınlayarak html formatında bir kod dosyası tarayıcınıza göndermesidir.
PHP scriptleri her zaman <?php anahtarıyla açılır ve ?>.anahtar dizimyle son bulur. Bu script arasında kalan bütün kodlar sunucu tarafından PHP scripti olarak yorumlanır ver derlenir.PHP kod bloğu dosyanızın her yerinde bulunabilir.Önemli olan <?php ve ?> anahtarları doğru biçimde tanımlansın. Kısayol için PHP kodları <? ve ?> şeklinde açıp kapatılarak da sunucu tarafından yorumlanabilir.
PHP:
<?php//php kodlarınızı buraya ekleyin?>
Bir PHP dosyası bildiğimiz HTML tagları ve PHP scriptlerinden oluşur. Adet olduğu üzere PHP kodlarımıza Merhaba Dünya (Hello World) diyerek başlayalım.Dosyamız yorumlandıktan sonra tarayıcımızdan Merhaba Dünya mesajını görelim:
PHP:
<html><body><?php echo "Merhaba Dünya"; ?></body></html>
Her Php kod satırı ; -(noktalıvirgül) ile bitmesi gerekir.Noktalı virgül bir PHP kodundan ,başka bir koda geçildiğini ifader eder. PHP ile çıktı ( output ) işlemlerini iki durumda gerçekleştirebiliriz: echo ve print.
PHPde Yorum Satırları
PHP kodlarımızda ,dili C dilinden de hatırlayacağınız üzere , tek satırlar için // , geniş yorum blokları için /* . */ yorum anahtarlarını kullanırız.
PHP:
<html><body><?php//Bu bir yorum satırıdır/* Bu da bir yorum bloğudur*/?></body></html>
Internet tarayıcınızda açtığınız web sayfasında herhangi bir php sayfasında ,View Source-Kaynağı Görüntüle seçeneğiyle bir PHP dosyasını tamamen izleyemezsiniz.Kaynak kodlarında yanlızca HTML formatında kod dizini görebilirsiniz.Bunun sebebi,sunucunun php dosyasını yorumlar ve çıktısını yayınlayarak html formatında bir kod dosyası tarayıcınıza göndermesidir.
Bir değişken geçici yada kalıcı olarak , sayı,dizi veya yazi-katarları gibi değerleri tutmak için kullanılır.Bir değişken tanımladığınız zaman scriptlerinizde defalarca kullanabilirsiniz
PHP dilinde tüm değişkenler $ sembolunun öntanımıyla belirtilir. PHP de değişken tanımı genel olarak aşağıdaki gibidir:
Yeni PHP programcıları genellikle değişken tanımı sırasında $ işaretini unutur ve php kodları hata ve hatalar verir.Bu durumda scriptleriniz çalışmaz.Bu durumlara dikkat etmenizi rica ederim.
Şimdi yazi dizisi ve sayı tutan iki değişken tanımlayalım:
PHP Oldukça Esnek Bir Dildir
PHP tanımlarken değişkenleri kullanmadan önce deklare(betimleme) etmeniz gerekmiyor..
Yukardaki örnekte gördüğünüz gibi,önce değişkeninizin tipini(int, double, String vs) belirtmenize gerek olmadan değer vererek kullanmanız mümkündür.
PHP ,otomatik olarak tanımlanan değişkenin tipini ayırır.Bu php programcıları için çok büyük kolaylıktır,
Diğer dillerde kullanacağınız değişkeni önceden tanımlamak zorunda ve sistem belleğine değişkeninizin tipini ayırtmanız gerekir.PHP de ise kullanmaya başladığınız andan itibaren değişkeninizi belirtmiş olursunuz.
Değişken İsimlendirme Kuralları
Birden çok kelime içeren değişken isimlerinizi _ (altçizgi) ile ayırın.Örnek:$degisken adi yanlış bir tanımlamadır..Bunun yerine $degisken_adi veya $degiskenAdi doğru olur.
Değişken isiminiz (a-Z, 0-9, and _ ) biçimli alfanumerik karakterleri içerebilir.
PHP dilinde tüm değişkenler $ sembolunun öntanımıyla belirtilir. PHP de değişken tanımı genel olarak aşağıdaki gibidir:
PHP:
$degisken_adi = deger;
Yeni PHP programcıları genellikle değişken tanımı sırasında $ işaretini unutur ve php kodları hata ve hatalar verir.Bu durumda scriptleriniz çalışmaz.Bu durumlara dikkat etmenizi rica ederim.
Şimdi yazi dizisi ve sayı tutan iki değişken tanımlayalım:
PHP:
<?php$yazi = "Merhaba Dunya";$sayi = 16;?>
PHP Oldukça Esnek Bir Dildir
PHP tanımlarken değişkenleri kullanmadan önce deklare(betimleme) etmeniz gerekmiyor..
Yukardaki örnekte gördüğünüz gibi,önce değişkeninizin tipini(int, double, String vs) belirtmenize gerek olmadan değer vererek kullanmanız mümkündür.
PHP ,otomatik olarak tanımlanan değişkenin tipini ayırır.Bu php programcıları için çok büyük kolaylıktır,
Diğer dillerde kullanacağınız değişkeni önceden tanımlamak zorunda ve sistem belleğine değişkeninizin tipini ayırtmanız gerekir.PHP de ise kullanmaya başladığınız andan itibaren değişkeninizi belirtmiş olursunuz.
Değişken İsimlendirme Kuralları
Birden çok kelime içeren değişken isimlerinizi _ (altçizgi) ile ayırın.Örnek:$degisken adi yanlış bir tanımlamadır..Bunun yerine $degisken_adi veya $degiskenAdi doğru olur.
Değişken isiminiz (a-Z, 0-9, and _ ) biçimli alfanumerik karakterleri içerebilir.
IF
ELSE
Kosul ifadeleri(if,else,elseif)yazilan kodun farkli durumlarda farkli davranis gostermelerini saglar.
Sıklıkla yazdıgınız kodun farklı hallerde farklı eylem gerçeklestirmeleri beklenir.
Koşul ifadelerini :
* if else durumu - yazılan ifadenin iki farklı durumu olması ,bu durumlar genellikle beklenen-doğru durum ve beklenmeyen -yanlış durum olarak açıklanır.
* elseif durumu - ifadenin birden fazla beklenen hali için yapılacak işlemlerde elseif koşulu kullanılır.
If Else Durumu
Herhangi bir kodun doğru ve yanlış hallerde farkli davranış sergilemesini sağlar.
Syntax(Yazım Biçimi)
if (koşulu)
If blogundaki koşulun doğru olmasi halinde yapilacaklar;
else
If blogundaki koşulun yanlış olmasi halinde yapilacaklar;
Örnek
Asagidaki örnekte ,gunlerden cuma ise çıktı olarak iyi haftasonlari! ,diger durumlarda ise iyi gunler! mesajını yayınlamak istiyoruz.:
if durumunda birden fazla davranış gostermesini istiyorsanız her satiri ; karakteriyle sonlandırmanız yeterlidir,şoyle ki:
ElseIf Durumu
Yazilan kodda iki yada daha fazla beklenen durum varsa ,kodumuzda elseif ifadesini kullanabiliriz:
if (koşulu)
If blogundaki koşulun doğru olmasi halinde yapilacaklar;
elseif (koşulu)
elseIf blogundaki koşulun doğru olmasi halinde yapilacaklar;
else
If blogundaki koşulun yanlis olmasi halinde yapilacaklar;;
Örnek
Asagidaki örnekte ,gunlerden cuma ise çıktı olarak iyi haftasonlari! , pazar ise iyi pazarlar! diger durumlarda ise iyi gunler! mesajını yayınlamak istiyoruz;
Kosul ifadeleri(if,else,elseif)yazilan kodun farkli durumlarda farkli davranis gostermelerini saglar.
Sıklıkla yazdıgınız kodun farklı hallerde farklı eylem gerçeklestirmeleri beklenir.
Koşul ifadelerini :
* if else durumu - yazılan ifadenin iki farklı durumu olması ,bu durumlar genellikle beklenen-doğru durum ve beklenmeyen -yanlış durum olarak açıklanır.
* elseif durumu - ifadenin birden fazla beklenen hali için yapılacak işlemlerde elseif koşulu kullanılır.
If Else Durumu
Herhangi bir kodun doğru ve yanlış hallerde farkli davranış sergilemesini sağlar.
Syntax(Yazım Biçimi)
if (koşulu)
If blogundaki koşulun doğru olmasi halinde yapilacaklar;
else
If blogundaki koşulun yanlış olmasi halinde yapilacaklar;
Örnek
Asagidaki örnekte ,gunlerden cuma ise çıktı olarak iyi haftasonlari! ,diger durumlarda ise iyi gunler! mesajını yayınlamak istiyoruz.:
PHP:
$d=date(D);
if ($d==Fri)
echo iyi haftasonlari!;
else
echo iyi gunler!;
?>
if durumunda birden fazla davranış gostermesini istiyorsanız her satiri ; karakteriyle sonlandırmanız yeterlidir,şoyle ki:
PHP:
$d=date(D);
if ($d==Fri)
{
echo Merhaba!
;
echo iyi haftasonlari!;
echo Pazartesi gorusuruz!;
}
?>
ElseIf Durumu
Yazilan kodda iki yada daha fazla beklenen durum varsa ,kodumuzda elseif ifadesini kullanabiliriz:
if (koşulu)
If blogundaki koşulun doğru olmasi halinde yapilacaklar;
elseif (koşulu)
elseIf blogundaki koşulun doğru olmasi halinde yapilacaklar;
else
If blogundaki koşulun yanlis olmasi halinde yapilacaklar;;
Örnek
Asagidaki örnekte ,gunlerden cuma ise çıktı olarak iyi haftasonlari! , pazar ise iyi pazarlar! diger durumlarda ise iyi gunler! mesajını yayınlamak istiyoruz;
PHP:
$d=date(D);
if ($d==Fri)
echo iyi haftasonlari!;
elseif ($d==Sun)
echo iyi pazarlar!;
else
echo iyi gunler!;
?>
Diziler,aynı turden oluşan değerlerin ardışık sıralanmasi olarak tarif edilir.
Dizi değişkenleri
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:
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.
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, PHPnin, 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, PHPnin 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 serpito, izzet, Hasan ve Şahika değerleri bulunduğuna göre, bu değişkenin count()u 4 olacaktır. (serpito = 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 Browsera 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 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 Browsera 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. Perle aşina alanların bu dizi türüne hash dendiğini hatırlayacaklardır. PHPde 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:
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 Browsera 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:
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.
Dizi Değişkenlerin Düzenlenmesi
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:
Dizileri birleştirme: array_merge()
İki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır, örnek:
Bu kod ile oluşturulan $yeni_dizi isimli dizi değişkenin hangi elemanlara sahip olduğunu, şöyle bir kodla görebilirsiniz:
İ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.)
Dizilere değişken ekleme: array_push()
Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri yazarız. Örnek:
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:
Dizinin ilk elemanını silme: array_shift()
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:
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.
Diziden kesit alma: array_slice()
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
Burada, PHPye $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.
Dizi değişkenleri
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[] = serpito;
$ogrenciler[] = izzet;
$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 ( );
for ($sayac=1 ; $sayac <= count($ogrenciler) ; $sayac++ ) {
print (\$ogrenciler dizisinin . $sayac .ncı elemanı: . $ogrenciler[$sayac] .
);
}
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, PHPnin, 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, PHPnin 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 serpito, izzet, Hasan ve Şahika değerleri bulunduğuna göre, bu değişkenin count()u 4 olacaktır. (serpito = 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 Browsera 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 Browsera 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. Perle aşina alanların bu dizi türüne hash dendiğini hatırlayacaklardır. PHPde 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 Browsera 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.
Dizi Değişkenlerin Düzenlenmesi
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:
Dizileri birleştirme: array_merge()
İki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır, örnek:
PHP:
$birinci_dizi = array ( serpito , izzet , 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:
PHP:
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.)
Dizilere değişken ekleme: array_push()
Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri yazarız. Örnek:
PHP:
$birinci_dizi = array ( serpito , izzet , 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:
PHP:
print (\$birinci_dizi adlı dizide $yeni_dizi adet değişken var<br>);
foreach ( $birinci_dizi as $ogrenci ) {
print ($ogrenci <br> );
}
Dizinin ilk elemanını silme: array_shift()
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:
PHP:
$birinci_dizi = array ( serpito , izzet , 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.
Diziden kesit alma: array_slice()
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
PHP:
$birinci_dizi = array ( serpito , izzet , Hasan , Şahika, Altun , Taç , Civelek , Tabak);$kesit = array_slice ($birinci_dizi , 3, 4);
Burada, PHPye $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.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 175
- Cevaplar
- 0
- Görüntüleme
- 173
