![]() |
![]() |
#11 |
![]() Veri Türleri
PHP, değişkenlere, tuttukları değere göre farklı bellek alanı tahsis eder; bu bakımdan verilerimizin türü etkin bir programcılık açısından önem taşır. Ayrıca PHP, diğer bütün programlama dilleri gibi belirli veri türleri ile belirli işlemleri yapar veya yapamaz. Örneğin, ancak iki sayı arasında aritmedik toplama yapılabilir. İki metin tutan değişken aritmetik olarak toplanamaz; ancak içerdikleri değerler ardarda eklenebilir. Ne var ki, PHP sizin aritmetik toplama mı, yoksa ardarda ekleme mi yapmak istediğinizi bilmek durumunda değildir. (PHP'ye 'muazzam dil' dedik; içinde yapay zekâ var demedik!) Dolayısyla değerleri 5 ile 6 olan iki değişkeni topladığınız zaman ortaya 11 yerine 56 çıkarsa, kabahati PHP'de değil, değişkenlere veri atayan kişide (büyük bir ihtimalle kendinizde) aramalısınız. PHP açısından dünyada altı tür değer vardır: Tamsayı (Integer): 5,124, 9834 gibi Çift (Double): 3,567 gibi Alfanümerik (String): "Reşit" gibi Mantıksal (Boolean): doğru (true)/yanlış (false) gibi Nesne (Object) Dizi (Array) Bazı uzmanlara göre, gerçekte PHP'de mantıksal (boolean) değişken türü yoktur. B kanının sebebi, PHP'nin true (doğru) ya da false (yanlış) olarak atadığımız değerleri 1 ve boş/null değerlere çevirmesi, mantıksal olarak sorgulandığında 0 dışındaki tam ve ondalık değişkenleri TRUE, 0'ı FALSE sayması, ve boş alfanümerik değişkenleri FALSE, dolu alfanümerik değişkenleri ise TRUE olarak değerlendirmesidir. Ancak daha sonra gereceğimiz gibi PHP, Mantıksal/Boolean adında bir değişken değiştirme fonksiyonuna sahiptir ve bu tür değişkenlerin türü sorulduğunda "boolean" karşılığını verir. Tür Değiştirme Değişkenlere atadığımız değerlerinin türlerini genellikle biliriz; ama yüzlerce değişkenle uğraştığımız bir Web programında değişken türünü unutmak çok kolaydır. Kimi zaman da değişkenlere program yoluyla değer atarız; başka bir deyişle programımız bazı değişkenleri kendisi oluşturabilir, ve bunlara kendisi değer atayabilir. Bu tür program yoluyla atanan değerlerin de türünde kuşkuya kapıldığımız anlar olabilir. Bir değişkenin değerinin türü hakkında kuşkunuz varsa, en emin yol bunu PHP'nin kendisine sormaktır. Bu sorgulamayı gettype() fonksiyonu ile yaparız. Fonksiyon PHP'nin gettype() ve print() gibi, kendi içinde bulunan kullanılmaya hazır bir çok fonksiyonu vardır. Daha sonra kendi fonksiyonlarımızı yazmanın yollarını da göreceğiz. Programcılık dilinde ister dile ait olsun, ister kendimiz yazmış olalım, bir fonksiyonu kullanmaya "fonksiyon çağırma" denir. Fonksiyonlar da fonksiyon çağırabilirler. Çağrılan bir fonksiyon ya kendisinden beklenen işi yapar, ya da kendisini çağıran işleme veya fonksiyonu bir değer sunar. Buna fonksiyondan dönen değer denir. Şimdi, bir PHP programı yazalım, bir takım değişkenlere değerler atayalım ve bunların türlerini PHP'ye soralım. Bir düzyazı programı ile şu metni yazın ve turler.php adıyla kaydedin: <HTML> <HEAD> <TITLE>PHP'de Degisken Turleri</TITLE> <**** http-*****="content-type" content="text/html; charset=ISO-8859-9"> <**** http-*****="Content-Type" content="text/html; charset=windows-1254"> </HEAD> <BODY> <B> <H2> <?php $sayi = 5; print("Birinci değişkenin adı: \$sayi<br>"); print("Değeri : "); print "$sayi<br>"; print("Türü : "); print gettype( $sayi ) ; //tamsayi/integer print "<br>"; print "<br>"; $alfanumerik = "Reşit"; print "İkinci değişkenin adı: \$alfanumerik<br>"; print "Değeri : "; print "$alfanumerik<br>"; print("Türü : "); print gettype( $alfanumerik ) ; //alfanümerik/string print "<br>"; print "<br>"; $ondalik = 5.1234; print "Üçüncü değişkenin adı: \$ondalik<br>"; print "Değeri : "; print "$ondalik<br>"; print("Türü : "); print gettype( $ondalik ) ; //çift,ondalık/double print "<br>"; print "<br>"; $mantiksal = true; print "Üçüncü değişkenin adı: \$mantiksal<br>"; print "Değeri : "; print "$mantiksal<br>"; print("Türü : "); print gettype( $mantiksal ) ; //mantıksal/boolean print "<br>"; print "<br>"; ?> </H2> </B> </BODY> </HTML> Bu programı çalıştığımızda karşımıza şöyle bir görüntünün gelmesi gerekir: Burada mantıksal (boolean) değer olarak doğru anlamına true değeri atadığımız halde, PHP'nin bu değişkenin değeri olarak 1'i gösterdiğine dikkat edin. PHP'de bir fonksiyon, elde ettiği değer doğru ise sonuç olarak 1 değerini verir. (Yanlış/false değerinin neye çevrildiğini bulabilir misiniz?) Escape turler.php dosyasını yazdıysanız, şu satırdaki, ters-bölü işareti dikkatinizden kaçmamış olmalı: print "İkinci değişkenin adı: \$alfanumerik<br>"; Daha önce gördük ki, tek veya çift tırnak içine de alsak, PHP, bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazar. PHP bunu, değişken adının başındaki $ görerek yaparak. $ işareti gibi PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek ve bu işaretleri düz metin saymasını sağlamak için bu işaretlerin önüne ters-bölü işareti koyarız. Buna o karakteri kurtarma veya ESCaping denir. PHP'nin anlamlı işaretleri ve bunların ESCape-yazılışı şöyledir: \' Tek tırnak \" Çift tırnak \\ Ters-bölü \$ Dolar işareti \n Yeni Satır (New Line) \r Satır Başı (Return) \t Sekme (Tab) karakteri Kimi zaman bir değişkene atadığımız değerin türünü değiştirmek gerekir. Bunu settype() fonksiyonu ile yaparız. Elimizde böyle bir imkan var diye, bir değişkenin alfanümerik (String) olan değerini sayıya çevirebileceğini sanmayın. PHP buna çok kızar! Şu örneği de tur_degistir.php adıyla kaydedelim: <HTML> <HEAD> <TITLE>PHP'de Degisken Turleri</TITLE> <**** http-*****="content-type" content="text/html; charset=ISO-8859-9"> <**** http-*****="Content-Type" content="text/html; charset=windows-1254"> </HEAD> <BODY> <B> <H2> <?php $degisken = 5.67890; print("Değişkenin değeri : "); print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //çift,ondalık/double print "<br>"; print "<br>"; print "İlk değiştirme işlemi: Alfanümerik/String:<br>"; settype( $degisken, string ); //alfanümerik/string print "Değeri : "; print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //alfanümerik/string print "<br>"; print "<br>"; print "İkinci değiştirme işlemi: Tamsayı/Integer:<br>"; settype( $degisken, integer ); //Tamsayı/Integer print "Değeri : "; print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //Tamsayı/Integer print "<br>"; print "<br>"; print "Üçüncü değiştirme işlemi: Ondalık/Double:<br>"; settype( $degisken, double ); //çift,ondalık/double print "Değeri : "; print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //çift,ondalık/double print "<br>"; print "<br>"; print "Dördüncü değiştirme işlemi: Mantıksal/Boolean:<br>"; settype( $degisken, boolean ); // Mantıksal/Boolean print "Değeri : "; print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; // Mantıksal/Boolean print "<br>"; print "<br>"; ?> </H2> </B> </BODY> </HTML> Bu programı çalıştırdığımızda, ilk atadığımız değerin ondalık/double olarak belirlendiğine dikkat edin. Bu değerin türünü alfanümerik/string olarak değiştirdiğimizde değişmediğini görüyoruz. Fakat tamsayı/integer'a çevirdiğimizde PHP değerin tamsayı bölümünü alıyor; ondalık-kesir bölümünü atıyor. Nitekim daha sonra değişkerin türünü yeniden ondalık yaptığımız halde, atılan bu bölüm geri gelmiyor. Son olarak değişkeni mantıksal ifade olarak değiştirdiğimizde, değerin doğru/true olduğunu anlıyoruz; değer olarak bize 1 dönüyor. PHP, sıfır dışındaki tüm değerleri doğru/true'ya çevirir; sıfır'ı ise yanlış/false olarak atar ve boş/null değer verir. Şu anda PHP'yi tam bilemediğimiz için nerede kullanılır kestiremiyoruz, ama diyelim ki burada olduğu gibi, değişkeni bir daha düzelmeyecek şekilde değişikliğe uğratmak istemeyebiliriz; fakat yine de değerinin türünü değiştirmek isteyebiliriz. Bunu da nerede kullanabiliriz, şu anda bilmiyoruz. Ama diyelim ki, böyle bir işlem yapmaya ihtiyacımız oldu! Hatırlıyor musunuz, biraz önce özel bir şekilde bir değişkene başka bir değişkenin adını değer olarak vererek, aslında bu değişkenin ilk değişkenin değerini almasını sağlamıştık. Burada da aynı tekniği kullanabiliriz. Bu kodu da tur_kopyala.php adıyla kaydedin: <HTML> <HEAD> <TITLE>PHP'de Degisken Turleri Kopyalama (Casting)</TITLE> <**** http-*****="content-type" content="text/html; charset=ISO-8859-9"> <**** http-*****="Content-Type" content="text/html; charset=windows-1254"> </HEAD> <BODY> <B> <H2> <?php $degisken = 3.1418; print("Değişkenin değeri : "); print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //çift,ondalık/double print "<br>"; print "<br>"; print "İlk kopyalama işlemi: Alfanümerik/String:<br>"; $kopya_degisken = ( string ) $degisken; //alfanümerik/string print "Değeri : "; print "$kopya_degisken<br>"; print("Türü : "); print gettype( $kopya_degisken ) ; //alfanümerik/string print "<br>"; print "<br>"; print "İkinci kopyalama işlemi: Tamsayı/Integer:<br>"; $kopya_degisken = ( integer ) $degisken; //Tamsayı/Integer print "Değeri : "; print "$kopya_degisken<br>"; print("Türü : "); print gettype( $kopya_degisken ) ; //Tamsayı/Integer print "<br>"; print "<br>"; print "Üçüncü değiştirme işlemi: Ondalık/Double:<br>"; $kopya_degisken = ( double ) $degisken; //çift,ondalık/double print "Değeri : "; print "$kopya_degisken<br>"; print("Türü : "); print gettype( $kopya_degisken ) ; //çift,ondalık/double print "<br>"; print "<br>"; print "Dördüncü kopyalama işlemi: Mantıksal/Boolean:<br>"; $kopya_degisken = ( boolean ) $degisken; // Mantıksal/Boolean print "Değeri : "; print "$kopya_degisken<br>"; print("Türü : "); print gettype( $kopya_degisken ) ; // Mantıksal/Boolean print "<br>"; print "<br>"; ?> </H2> </B> </BODY> </HTML> Bu programın can alıcı noktası örneğin "$kopya_degisken = ( boolean ) $degisken;" şeklindeki komut; burada $kopya_degisken adlı değişkene $degisken adlı değişkenin değerini (eşittir işareti ile) kazandırırken, arada yeni değişkenin kazanmasını istediğimiz türün adını parantez içinde yazıyoruz. Burada gerçekte, $degisken adlı değişkenin değerine hiç bir şey olmuyor. Bu programı çalıştırırsanız, ilk değerin ontalık kısmının önceki örnekte olduğu gibi değişim işlemi sonunda tamamen yok olmadığını görebilirsiniz. $degisken adlı değişkenin değeri değişmeden durduğu için üçüncü adımda yıptığımız ondalık tür olarak kopyalama sonucu yeni değişkenin değeri yine kesiri ile karşımıza çıkıyor. |
|
![]() |
![]() |
![]() |
#12 |
![]() Dört yararlı fonksiyon
Dört yararlı fonksiyon PHP'de değişken değer türü değiştirmekte kullanabileceğimiz kullanılmaya hazır fonksiyon vardır. ilerde döngüleri ele aldığımızda daha çok anlam kazanacak olan bu değişkenleri şimdilik bir kenara kaydedin: isset() ve unset() PHP, bir değişken tanımlandığı anda, sanki içinde değer varmış gibi, bilgisayarın belleğinde yer ayırır. Bu bazen bilgisayarın kıt kaynaklarını zorlayabilir. isset() fnksiyonu, PHP'nin bir değişkenin içinde değer bulunup bulunmadığını sınamasını sağlar. unset() ise varolan bir değişkeni yok eder. Bu iki fonksiyonu birlikte kullanabiliriz ve boş değişkenleri yok ederek, bilgisayarın belliğinde yer açabiliriz: if (isset($bir_degisken)) { print( $bir_degisken ); } else { unset($bir_degisken); } Bu kod parçası, $bir_degisken isimli dğişkenin içi boş değişse, içeriğini görüntüleyecek, içi boş ise varlığına son verecektir. empty() isset() fonksiyonun tersi işleve sahiptir; bir değişkene değer atanmamışsa, veya değeri sıfır veya boş alfanümerik (null string) ise, doğru (True) değeri verir. $bir_degisken = 123; echo empty($bir_degisken); $bir_degisken = ""; echo empty($bir_degisken); Bu program parçası Browser penceresine sadece empty() fonksiyonun doğru sonuç verdiği birinci echo() deyiminde 1 yazdıracaktır. is_string(),is_integer(),is_double(), Sınadıkları değişkenin aradıkları türden değer içermesi halinde doğru 'True) sonuç verirler. <?php $a = 6.567; if (is_double($a)) { print ("A Double'dır<br>"); } $b = "Reşit"; if (is_double($a)) { print ("B String'dir<br>"); } $c = 6; if (is_int($c)) { print ("C Integer'dır<br>"); } ?> Bu kod, Browser penceresine "A double'dır, B String'dir, C Integer'dır" yazdıracaktır. PHP'de bu fonksiyonlara benzeyen fakat başka tür değer arayan şu fonksiyonlar da vardır: is_array(), is_object. intval(), doubleval(), doubleval() Bir değişkenin değerinin türünü başka bir türe çevirmeye yararlar. intval(), ortaya çıkartacağı tamsayı değişkenin 10 tabanlı (decimal) veya 16 tabanlı (hexadecimal) olmasını sağlayan ikinci bir argüman alabilir: <?php $a = "123ABC"; $b = inval($a, 16) print ($b); ?> Bu program Browser penceresine, 123'ün hexadecimal ifadesi olan "1194666" yazdıracaktır. |
|
![]() |
![]() |
![]() |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
Seçenekler | |
Stil | |
|
|