unknown type (bilinmeyen
veri tipi)
Veri tipleri programci tarafindan tayin edilmez.PHP web
sayfasini islerken bu veri tiplerinin ne olmasi gerektigine
kendisi karar verir.
String Veri Tipi
String veri tipi icerisinde textler tutulur.Bu bazen butun
bir cumle veya yanlizca bir kelime olabilir.Cift Tirnak
icine alinan butun karekterler ve hatta numerik sayilar
bile duz text muamelesi gorur.
$ArabaTipi = "Tofas";
$MotorHacmi = "1.6";
Yukardaki iki degiskendeki veri tipi aynidir.Ikiside string
veri tipidir ve duz texttir.Yani tirnak icerisindeki ifade
numerik diye veri tipimiz numerik olmayacaktir.Cift tirnak
isareti icine alinan tum veriler "string" yani duz text
olarak degerlendirilir.
String Siralamasi (Text degiskenlerimizin icinde
tuttugumuz degerleri yan yana siraliyoruz)
String siralamasi bir degisken icinde tutugumuz bir textin
yanina ikinci bir degiskenimizde tuttugumuz textin yazdirilmasi
olarak tanimlanabilir.En basit olarak asagidaki ornekte
nasil yapildigi gosterilmistir.
$Araba = $ArabaTipi . $MotorHacmi;
artik $Araba degiskenimiz icerinde soyle bir deger saklaniyor
: Tofas1.6
Guzel bir olay degilmi.
Simdi olayi biraz daha guzellestirelim ve Tofas1.6 yerine
Tofas 1.6 yapabilirmiyiz diye bakalim.(Birinde Tofas1.6
digerinde Tofas'tan sonra bir bosluk var.)
Bunun icin bosluk degiskeni yaratalim:
$Bosluk = " ";
Ve $Araba degiskenimize ekleyelim
$Araba = $ArabaTipi . $Bosluk . $MotorHacmi;
Artik $Araba degiskenimiz icerisinde soyle bir deger saklaniyor.
Tofas 1.6
Bu boslugu su sekilde de yaratabilirdik.
$Araba = $ArabaTipi . " " . $MotorHacmi;
Iki sekilde de ArabaTipi ile MotorHacmi arasinda bosluk
yaratilabilir.Secim size kalmis.Burada orneklerle PHP bilginiz
arttilmaya calisilmaktadir.
Simdi ekrana bu arabanin sahibinin adi ile beraber yazdiralim.(Ben
Tofastan nefret ederim ama ne yapayim en basit araba markasi
adi Tofas hehe :))
echo "Serkanin arabasi $Araba ";
Ekrana gelen goruntu soyle olacaktir.
Serkanin arabasi Tofas 1.6
Not : Eger ekrana "parse error" yazan bir hata mesaji geliyorsa
ilk once butun satirlarin sonuna ";" koydugunuza emin olun.Eger
halen hata mesaji geliyorsa degisken isimlerinizi kontrol
edin buyuk olasilikla yanlis yadiniz veya buyuk/kucuk harf
ayrimina dikkat etmediniz.Eger halen hata mesaji geliyorsa
mail atin.
sceylani@usa.net
Numerik Veri Tipleri
PHP icerisinde kullanilan iki degisik numerik veri tipi
vardir.Bunlardan ilki "integer" ikincisi "double" dir.Ornek
vererek aciklayalim.
$integer_numerik_veri_tipi = 26;
$bir_baska_integer_numerik_veri_tipi = -3598;
$double_numerik_veri_tipi = 4.567;
$bir_baska_double = -16.1;
Bu iki veri tipinde goruldugu uzere birinde tamsayilar(integer)
digerinde ondalik sayilarla beraber tam kisim degerleri
turulmaktadir(double).Bu iki veri tipinin farkliliklari
yanlizca bu degildir.Tutabilecekleri deger araligida double
ve integer da farklidir. Uzerinde calisilan isletim sistemine
gore tutabilecekleri sayi araligi degisir.Mesela Windows
ortami icin bu aralik integer icin -32768 den 32767 ye kadardir.Double
icin windows ortaminda aralik
1.79769313486232E308 den -4.94065645841247E-324 (Negatif
Degerler icin)
+4.94065645841247E-324 den 1.79769313486232E308 (Pozitif
Degerler icin)
*E notasyonu 10 un katlarini gostermek icin kullanilmistir.(2.5E3
= 2500 gibi)
Matematiksel Islemler
+ Toplama islemi icin
- Cikarma islemi icin
* Carpma islemi icin
/ Bolme islemi icin
% Mod islemi icin kullanilir.( 16 % 3 = 1 gibi)
Bir kac ornekle aciklayalim :
$Anakart = 125;
$Modem = 65;
$Hafiza = 110;
$Toplam = $Anakart + $Modem + $Hafiza;
echo "Toplam masrafimiz $Toplam dolar...";
Burada Anakart, Modem ve Hafiza icin degerlerimizi girdik.Sonrada
Toplam degiskeninde bunlari toplattik.Ekrana toplam sonucu
yazmak icin ise echo komutunu kullandik.
Eger bunlari bir HTML sayfasi icinde goruntulmek isemis
olsaydik:
<HTML>
<BODY>
<?php
$Anakart = 125;
$Modem = 65;
$Hafiza = 110;
$Toplam = $Anakart + $Modem + $Hafiza;
echo "Toplam masrafimiz $Toplam dolar...";
?>
</HTML>
</BODY>
Yazmamiz ve kaydetmemiz yeterli olacakti.Browserdan bu sayfaya
bakiginizda soyle bir goruntu olacakti.
Toplam masrafimiz 300 dolar...
Degiske'nin Degerini Kendine Eklemek
PHP icerisinde degiskenin degerini kendine eklmeyi ogrenmek
bazen cok isimize yarayacaktir.O yuzden bu bolumu dikkatle
okumanizi tavsiye ederim.Bir cok islemde bunu kullanacagiz
ve buradaki kisa yollar sizin icin onemli olcude zaman kaybini
engelleyecektir.
Kisaca olaya bakmak gerekirse :
$IslemSayisi = 5;
$IslemSayisi = IslemSayisi + 1;
echo $islemSayisi;
Gibi bir kod parcasi yazdigimda ekranda gorecegim deger
"6" olacaktir.Degiskenimiz icerisinde tutulan degerimiz
ilk basta "5" sayisiydi.Ben degiskenin kendisine "1" ekledim.Ve
sonuc "6" oldu.Cok basit gibi gorunen bu islem aslinda bir
cok seyin temelidir.PHP konusunda sorulan sorularin(Forumlarda)
bir cogunun bu konuyu az bilmekten gectigini gordum.Mesela
bir tablo icerisinde tutugunuz klik sayisina ,bir kullanici
ayni linki tikladigi zaman "1" eklemek istiyorsunuz iste
size bunu yapmanin yolu.Tablodan degeri okutun,uzerine "1"
ekleyin ve sonra ayni degeri tabloya tekrar yazdirin.Boylece
isiniz gorulecektir.
Bu konu hakkinda bir kac kisayol bulunmaktadir.Yukaridaki
yazim seklinden ayri olarak PHP icinde kullabilceginiz degisik
sekiller soyledir.
$IslemSayisi = 5;
$IslemSayisi ++;
echo $IslemSayisi;
Ciktiniz yine ayni "6" olacaktir.($IslemSayisi = $IslemSayisi
+ 1; ile ayni yazim seklidir.)
$IslemSayisi = 5;
$IslemSayisi + = 2;
Ciktiniz bu sefer "7" olacaktir.($IslemSayisi = $IslemSayisi
+ 2; ile ayni yazim seklidir.)
$IslemSayisi = 5;
$IslemSayisi + = $IslemSayisi;
Ciktiniz yine "6" olacaktir.($IslemSayisi = $IslemSayisi
+ 1; ile ayni yazim seklidir.)
Matematiksel Islemlerde Oncelik Sirasi
Gercek matematik hesaplamalarinda oldugu gibi islemlerin
birbirine gore oncelikleri vardir.Bir ornekle aciklarsak
:
$Sayi = 3+5*6;
Isleminin sonucu soyle hesaplanacaktir.Ilk once carpma sonra
bolme sonra toplama sonrada cikarma islemleri yapilacaktir.Ornegimizde
ilk once "5" ile "6" carpilacak daha sonra cikan sayi "3"
ile toplanacaktir.
Ciktimiz "33" olacaktir.
Eger parentez icine alinmis bir islem varsa ilk once parentez
icindeki islemler yapilir.Ornek verecek olursak :
$Sayi = (3+5)*6;
Ciktimiz "48" olacaktir.
Butun ogrendiklerimizi bir buyuk ornek uzerinde gostermek
istersek :Fiyati 1000 lira olan malin KDV eklenince ne kadar
oldugunu , %20 indirimden sonra ne kadar oldugunu hesaplayalim.
1.Text editorunuzu acip asagidaki kodlari yazin.
<HTML>
<BODY>
<?php
$Fiyat = 1000;
$KDV = 10;
$Indirim = 20;
$KDV_Eklenince_Fiyat = $Fiyat + (($Fiyat/100)*$KDV);
$Indirim_Olunca_Fiyat = $Fiyat - (($Fiyat/100)*$Indirim);
echo "KDV Dahil Fiyati $KDV_Eklenince_Fiyat <BR>";
echo "Indirim Olunca Fiyati $Indirim_Olunca_Fiyat";
?>
</BODY>
</HTML>
2.Bu dosyayi "fiyat.php" olarak kayit edin.
3.Browser yardimiyla dosyayi acin.(http://localhost/fiyat.php)
Ornek Dosyalar
http://www.turk-php.com/ornekler/fiyat.php
Sabitler
Simdiye kadar olan kisimda degiskenlere nasil deger verebilecegimizi
gorduk.Degiskenlerimize deger atarken asagidaki gibi ornekler
kullandik.
$yazar = "Serkan Hadi Ceylani";
echo $yazar;
$yazar = "Tom Hanks";
echo $yazar;
Boyle yazilmis bir kod grubunun ciktisi soyle olacaktir.
Serkan Hadi Ceylani
Tom Hanks
Eger web sayfasinda $yazar degiskenini echo () komutuyla
beraber kullanirsaniz boyle iki degisik cikti alirsiniz.Eger
istediginiz bu olayin olmasini engellemek ise "Sabit" kavramini
ogrenmeniz gerekmektedir.
PHP programlarimiz icerisinde bazi degiskenlerin degerlerini
sabit olarak isin en basinda tanimlayabiliriz.Bunun icin
en guzel bir kac ornek asagida verilmistir.
$Turkiyenin_Kurucusu = "Mustafa Kemal Ataturk";
$Suyun_Kaynama_Noktasi = 100;
$Ulkemin_Adi = "Turkiye";
PHP icerisinde,aldigi deger tum islemler boyunca veya programin
akisi icerisinde,ilk verdigimiz degerden baska deger alamayacak
sabit tanimlamak icin "Define"
terimini kullaniyoruz.Ornek vermek gerekirse,
define ("TURKIYENINKURUCUSU", "Mustafa Kemal Ataturk");
define ("SUYUNKAYNAMANOKTASI", 100);
define ("ULKEMINADI", "Turkiye");
Goruldugu uzere bu degerler asla degismeyecek fiziksel veya
tarihsel degererdir.Bu nedenle bu tip ogeler icin programin
basinda bu tip sabit degisken tanimlamalari yapmak isimizi
kolaylastiracaktir.
Web icin bu olayi dusunursek bazen browser penceresinin
yuksekligi,veya genisligi gibi degerlerin ne olmasi gerektigini
sabit olarak programin basinda bu sekilde "sabit"leri "define"
komutunu kullanarak tanimlayabilirsiniz.
PHP icerisinde sabitler ayni degiskenler gibi echo () komutu
kullanilarak ekranda gosterilebilir.Bunu bir ornekle aciklayacak
olursak,
echo "Turkiyenin ilk Cumhurbaskani " . TURKIYENINKURUCUSU;
Not : Sabitleri kullanirken bu sekilde cift tirnagin disinda
kullanmak olasi hatalari engelleyecektir.
yukardaki kodun ciktisi su sekilde olacaktir.
Turkiyenin ilk Cumhurbaskani Mustafa Kemal Ataturk
PHP icerisinde ,kurulum sirasinda tanimlanmis bazi sabitlerde
bulunmaktadir.Bunlar PHP nin kendisi yazilirken tanimlanmistir.Ornek
vermek gerekirse,
echo PHP_OS;
Komutunun ciktisi PHP nin uzerinde calistigi server'in Isletim
Sistemi olacaktir.Bu sekilde tanimlanmis sabitler icin PHP
nin kendi sitesinden detayli bilgi alabilirsiniz.(www.php.net)
Donusumler
PHP programlarinin yazilmasi sirasinda karsiniza soyle bir
problem cikabilir.Eger degiskenin veri tipini degistirmek
isterseniz bunu nasil yapacaksiniz.Daha onceki konularda
veri tipleri(Text,Sayi,Nesne vs) hakkinda detayli aciklama
yapilmisti.Simdi konumuza bir ornek verelim.
$Araba = "1.6 Tofas";
$KDV = 17;
$Odenecek_Vergi = $Araba * $KDV ;
Ilk degiskenimiz bir text yani duz bir yazi.Ikinci degiskenimiz
bir Sayi.Biz ucuncu satirda bir text ile bir sayinin carpimini
bir degiskene atiyoruz.
Carpimin sonucunu merak ettinizmi?
echo $Odenecek_Vergi ;
ile sonucu ekrana yazdirmak istersek karsimiza ,
"27.2" gelecektir.
PHP ye bir sayi vererek onu text ile carpmasini soyledik.PHP
de text icerisindeki ilk sayi degerini alarak gerisindeki
texti onemsemeden ilk sayi ile (17) text icerisinde yer
alan sayiyi (1.6) carpti.Sonucu da $Odenecek_Vergi degiskeni
icerisinde sakladi.Bu olay PHP nin ilginc bir ozelligidir.PHP
gerektiginde bu tip maniksal karalari verebilecek kadar
zekice tasarlanmistir.
Degiken Tip Donusumu
PHP icerisinde bir degiskenin veri tipini kesin olarak belirlemek
istersek (Sonucta yukardaki gibi bir olayi her zaman istemeyebiliriz),
Asagidaki ornekte oldugu gibi degiskenin degerini kendisine
ozel bir tanimlama ile esitlememiz gerekmektedir.
$DegiskenAdi = 3;
$DegiskenAdi = (string) $DegiskenAdi;
Yukardaki ornekte ilk once $DegiskenAdi degiskeni icerisinde
bir sayi degerini atadik.Bu degiskenin veri tipi sayidir
(Numerik).Ikinci satirda degiskenimizi duz yazi veri tipine
cevirdik (String).Bu olay programlarimiz icerisinde bir
sayi degeri olarak kullandigimiz degiskenin yeri geldiginde
text veri tipi olarak kullanilmasini saglayacaktir.Eger
tekrar bu degiskeni Numerik veri tipine donusturmek istersek
yapmamiz gereken ayni sekilde olayi tersine cevirmketir.
$DegiskenAdi = 3;
$DegiskenAdi = (string) $DegiskenAdi;
$DegiskenAdi = (integer) $DegiskenAdi;
Ilk Satirda degiskenimize 3 degerini atadim.Bu numerik bir
veri tipidir.(Verinin 3 olmasindan dolayi numerik degil,cift
tirnak icerisine almadigim icin verimiz bir numerik veri
tipidir.Eger soyle yapsaydim "3"; Bu degiskenimiz duz text
veri tipinden baska bir sey olmayacakti)
Ikinci Satirda bu numerik tipteki veriyi(integer veya double)
,duz text tipinde (string) bir veri tipine donusturdum.
Ucuncu satirda tekrar verimizi string halden cikarip numerik
bir hale soktum.
gettype () ve settype () Kavramlari
Bu iki komut degiskenimizin veri tipini ogrenmek ve degiskenimize
istedigimiz veri tipini atamak icin kullanilir.
Ornek vermek gerekirse,
$DegiskenAdi = 3;
echo gettype ($DegiskenAdi);
Bu iki satirlik kod parcasinin ciktisi soyle olcaktir.
"integer"
Burada gettype komutunu kullanarak PHP'ye degiskenimizin
ne tur bir veri tipine sahip oldugunu sorduk.PHP bize bu
degisken icinde saklanan verinin "integer" yani numerik
bir veri oldugu cevabini verdi.(gettype komutunu echo ile
kullanarak PHP nin ekrana cevabi yazmasini sagladik)
Simdi de "settype" komutunun kullanimina bakalim.
$DegiskenAdi = 3;
settype ($DegiskenAdi , "string");
Ayni Yukarida veri tipinin donusumu konusunda anlatiggimiz
gibi bir numerik veri tipini "settype" kullanarak string
yani duz text veri tipine donusturdum.
Artik "gettype" komutu ile degiskenin veri tipini ogrenmek
istersem simdi artik bana cevabi "string" seklinde olacaktir.
$DegiskenAdi = 3;
settype ($DegiskenAdi , "string");
echo gettype ($DegiskenAdi);
Kodumuzun ciktisi,
"string" olacaktir.
Ilk satirda bir numerik tipinde verimiz vardi ben settype
kullanarak bunu string hale cevirdim.Sonrada gettype komutunu
kullanarak degiskenimizin ne tur bir veri tipinde deger
sakladigini buldum.echo komutunu kullanarak ta ekrana yazdirdim.
isset,unset,ve empty Komutlarinin Kullanilmasi
PHP icerisinde yer alan bu uc komut degiskenlerle ilgili
islemlerde cok kullanislidir.Asagida bu uc komutun kullanimlarina
iliskin detayli aciklama bulacaksiniz.
Ilk komutumuz "isset ()" bize komutun icinde verdigimiz
yazi grubunun bir degisken olarak program icinde tanimlanip
tanimlanmadiginin cevabini verir.Mesela program icerisinde
$Sayi diye bir degisken tanimlayip tanimlamadigimiz bulmak
istiyoruz.Bunun icin asagidaki gibi bir kod yazmamiz yeterli
olacaktir.
echo isset ($Sayi);
bu kodun ciktisi, eger boyle bir degiskenimiz var ve bir
deger bu degisken icinde saklaniyorsa "1" degerini dondurur.Eger
boyle bir degisken hic tanimlanmadi ise hic bir deger dondurmez
(Sifir degerini bile dondurmez. Hicbirsekilde,hicbir deger
almaz)
bu mesela bir cerezin yazilip yazilmadigini kontrol ederken
isimize yarayabilir.
Ikinci komutumuz unset () 'in kullanimina bakacak olursak,
bu komutla bir degisken icindeki verinin tamamen yok edilmesini
sagliyoruz.
unset ($Sayi);
seklinde kullanilir.Degiskenin bir hafiza parcasinda sakladigi
veri bu komutla imha edilir.Hafiza parcasi tamamen temizlenir.Kullanirken
dikkat edilmesinde fayda vardir.
Ucuncu komutumuz empty ()
isset () komutunun mantiksal olarak tam tersidir.Kullanim
olarak ayni isset () te oldugu gibidir.Komutun icinde verdigimiz
degisken adi eger hic tanimli degilse,sifira esit ise veya
bosluk ( " ") degerine esit ise "1" degeri dondurulur.Eger
degisken tanimli ve bu degerlerden birine esit degilse hic
bir deger donmez.
Genel Tanimli Degiskenler (Environment Variables)
Bunlar PHP degiskenleri olarakta tanimlanmaktadir.Programinizdan
bagimsiz olarak PHP tarafindan o anda yaratilmis degiskenlerdir.PHP
programlariniz icinde bu degiskenleri kolayca kullanabilirsiniz.Bu
degiskenler genelde HTTP ile bilgileri iclerinde barindirilar.Programinizin
icinden bu degiskenleri cagirabilir,ve icelrindeki veriyi
ayni kendi degiskenlerinizde kullandiginiz gibi kullanabilirsiniz.Bir
ornek vermek gerekirse
echo $HTTP_COOKIE_DATA;
boyle bir kodun ciktisi size kullanilmakta olan bir cookie
yani cerez bilgisi olup olmadigini gosterecektir.
Bir baska kullanisli PHP degiskeni
echo HTTP_USER_AGENT;
Bu degiskeni kullanarak kullanicinizin kullandigi browser
tipini ogrenebilirsiniz.PHP degiskenlerini kendiniz degistiremezsiniz.Yanlizca
isinize yaramasi icin kullanabilirsiniz.
Genel Tanimli PHP degiskenlerinin tam listesini ve ayrintili
aciklmalarini www.php.net adresinden ogrenebilirsiniz.
Her turlu soru ve oneriniz icin mail atmaktan cekinmeyiniz.
Mail Adresim : serkan@turk-php.com