Yukarıdaki örnekleri yaparken, = işaretini bol bol
kullandık ve böylece PHP'nin bir çok operatöründen biriyle tanıştık. Buna PHP
dilinde "atama operatörü" denir. Bu işlemci sadece yukarıda kullandığımız gibi,
bir değişkenin bir değere eşitliğini ilan etmek amacıyla kullanılmaz. Örneğin:
print ( $sayi = 123 ) ;
ifadesinde olduğu gibi, bir fonksiyonun içinde de
hem atama işlemi yapılabilir; hem de işlem yürütülür. PHP'nin aritmetik,
birleşik-atama, birleştirme, karşılaştırma ve mantıksal sınama operatörleri
vardır. Aritmetik işlemciler:
| + |
Toplama |
6+5 = 11 |
| - |
Çıkartma |
6 - 5 = 1 |
| / |
Bölme |
6 / 5 = 1.2 |
| * |
Çarpma |
6*5 = 30 |
| % |
Kalan (Modulus) |
6%5 = 1 |
Aritmetik işlemleri gerçek sayılarla yaptığımız
gibi, tuttuğu değer sayı olan değişkenlerle de yapabiliriz. Daha önce, PHP'de değişken tanımlar ve bunlara
değer atarken sayı olan değişkenleri tırnak işareti kullanmadan, alfanümerik
değişkenleri ise tırnak içinde yazmıştık. PHP, tırnak kullanmasanız da bir
değişkenin sayı olup olmadığını anlar; daha sonra bu değişkenlerle aritmetik
işlem yapabilir. PHP ayrıca rakamla başlayan alfanümerik değişkenleri sayı
olarak kullanmaya kalktığınızda, bu değerin başındaki bütün rakamları sayı
olarak kabul eder. PHP açısından harf veya işaretle başlayan alfanümerik
değişkenlerin sayı olarak değeri sıfırdır. Örnek:
$a = 6;
$b = "22/A";
print ($a + $b);
sonuç olarak 28'i verecektir; veya
$a = 6;
$b = "A/22";
print ($a + $b);
sonuç olarak 6 çıkacaktır. Bu küçük deneyi
yaparsanız, PHP ile program yazarken hangi değişkenin ne sonuç vermesi
gerektiğini dikkatle düşünmek zorunda olduğunuzu görürsünüz. Bununla birlikte elimizde bir kişinin adı ve
soyadı ayrı değişkenler halinde ise, bunları birbirine ekleyerek (concatenation)
ortaya yeni bir alfanümerik değişken çıkartabiliriz:
<?php
$adi = "Reşit";
$soyadi = "Muhtar";
$adi_soyadi = $adi . " " . $soyadi;
print ("<br>");
print ($adi_soyadi);
print ($adi . "'nın soyadı " . $soyadi . "'dir.")
?>Bu örnekte, sadece ekleme yoluyla yeni bir
değişken oluşturmakla kalmıyoruz; fakat alfanümerik değişkenleri, başka
metinlerle de birbirine ekleyebildiğimizi görüyoruz. Bu işlemi nokta işaretiyle
(.) yapıyoruz. Bu işlemciyle sadece değişkenlerin değerlerini değil fakat
metinleri de birbirine ekleyebiliriz:
<?php
print ("Merhaba " . "..." . "Arkadaşlar! ")
?> PHP'nin atama işlemcisi eşittir (=) işareti
demiştik, birleşik-atama (combined-assignment) işlemcileri, bu işarete diğer
aritmetik işlemciler eklenerek oluşturulur.
| İşlemci |
Örnek |
Anlamı |
| += |
$a += 5 |
$a = $a + 5 |
| -= |
$a -= 5 |
$a = $a - 5 |
| /= |
$a /=5 |
$a = $a / 5 |
| *= |
$a *= 5 |
$a = $a * 5 |
| %= |
$a %= 5 |
$a = $a % 5 |
| .= |
$a .= "metin" |
$a = $a" metin" |
Bu işlemi zihnimizde, "A değişkeninin mevcut
değerine 5 ekle, çıkan sonucu A değişkenin yeni değeri yap!" şeklinde
canlandırabiliriz.
Bir Arttırmak veya Azaltmak
Değerleri sadece 1 arttırmak veya azaltmak için
PHP, bir kolaylık sağlar:$a++veya ++$a: $a'nın değerini 1 arttırır;$a--veya --$a: $a'nın değerini 1 eksiltir. ++ veya -- işaretinin değişken adından önce veya
sonra olmasının sonucu farklı olur. İşaretler değişkenin adından önce ise PHP
önce değişkenin değerini bir arttırır veya eksiltir, sonra bu yeni değeri işleme
katar; işaretler değişken adından sonra ise, PHP değişkenin o andaki değerini
işleme kadar, sonra değeri bir arttırır veya eksiltir. PHP'nin karşılaştırma yapması için kullandığımız
işlemciler ise işlem işaretinin sağı ve solundaki değerleri veya değişkenlerin
değerlerini işaretin belirttiği karşılaştırmayı yaptıktan sonra ortaya ya doğru
(true) ya da yanlış (false) sonucunu çıkartırlar. Söz gelimi, değeri 6 olan
değişkenin 5'ten büyük olup olmadığını sınarsak, sonuç doğru; 5'ten küçük olup
olmadığını sınarsak sonuç yanlış çıkacaktır. PHP'nin karşılaştırma işlemcileri
şunlardır:
| İşlemci |
Anlamı |
Örnek |
$a=6 ise: |
| == |
eşitse |
$a == 5 |
Yanlış/False |
| != |
eşit değilse |
$a !=
5 |
Doğru/True |
| === |
aynı ise |
$a === 5 |
Yanlış/False |
| > |
büyükse |
$a > 5 |
Doğru/True |
| < |
küçükse |
$a < 5 |
Yanlış/False |
| <= |
küçükse veya eşitse |
$a <= 5 |
Yanlış/False |
| >= |
büyükse veya eşitse |
$a >= 5 |
Doğru/True |
PHP'nin karşılaştırma işlemcileri hem tam ve
ondalık sayı türü değerlerle, hem de alfanümerik değerlerle kullanılabilir. Daha ileri aşamalarda, bazen değişkenlerimizin
karşılaştırmasının bu kadar basit olamayacağını; kimi zaman iki grup değişkenin
karşılaştırılması gerektiği durumların bulunduğu göreceğiz. Diyelim ki, bir
öğrencinin başarılı sayılması için hem vize notunun, hem de yılsonu sınav
notunun belirli sayılardan büyük olması gerekiyor. Bu durumu ancak
karmaşık-mantıksal sınamadan geçirmemiz gerekir. Bu sınamayı iki ayrı sınama
sonucu ile birlikte kullanırız. Örneğin:
vize notu yeterli - final notu yetersiz = kalır (yanlış/false)
vize notu yeterli - final notu yeterli = geçer (doğru/true)
PHP'de bu karşılaştırmayı iki grubun arasına
koyduğumuz işaretlerle yaparız İşaretin sağ ve sol tarafının doğruluğu veya
yanlışığı işarete göre nihai sonucun doğru veya yanlış olmasını sağlar. Bu
karşılaştırmaları yaparken şu işlemcileri kullanırız:
| İşlemci Adı |
Anlamı |
İşlem Yönü |
Örnek |
| || |
veya |
sol veya sağ doğru |
doğru || yanlış = doğru |
| or |
veya |
sol veya sağ doğru |
doğru || yanlış = doğru |
| && |
ve |
sol ve sağ doğru |
doğru || yanlış = yanlış |
| and |
ve |
sol ve sağ doğru |
doğru || yanlış = yanlış |
| Xor |
Şartlı-veya |
Sadece sol veya sağa doğru |
doğru ||
yanlış = doğru |
| ! |
Değil |
sol veya sağ
yanlış |
doğru || yanlış = doğru |
"veya" ve "ve" sınamaları için iki ayrı işlem
işareti bulunmasının sebebi, PHP'nin işlem sırasıyla ilgilidir. Şimdi,
kavranması kolay olmayan ikili mantıksal sınamalara bir örnek verelim; yukarıda
öğrencinin durumunu PHP komutu olarak yazalım.
<?php
$vize = 45;
$final = 65;
if ($vize >= 50 && $final >= 50)
{
print ("Öğrenci geçti!");
}
else
{
print ("Öğrenci kaldı!");
}
?> Mantıksal karşılaştırma işlemleri daha da karmaşık
olabilir. Örneğin, öğrencinin geçmiş sayılması için yılsonu vize ve final
notlarının 45'dan yüksek, ve ya birinci sömester notunun ya da vize ve final
notlarının ortalamasının 65'den yüksek olması şartı aranabilir. Bu durumda kodu
şöyle yazmamız gerekirdi:
<?php
$vize = 45;
$final = 65;
$ilk_sem = 45;
$ortalama = ($vize + $final) / 2;
if (($vize >= 45 && $final >= 45) and ($ilk_se >= 65 || $ortalama >= 65))
{
print ("Öğrenci geçti!");
}
else
{
print ("Öğrenci kaldı!");
}
?>Burada, PHP önce || veya && işaretinin sonucunu
bulacak sonra and veya or işlemcisinin gereğini yapacaktır. İşlem önceliği deyince.. Bütün programlama dilleri
gibi PHP için de işlemlerin hangi sırada yapıldığı önem taşır. "5 + 4 * 2"
işleminin sonucu, önce 5 ile 4'ün toplanması ve sonucun 2 ile çarpılması halinde
başka, 4'ün 2 ile çarpılması ve sonucun 5 ile toplanması halinde başka
olacaktır. Bu bakımdan, PHP'nin hangi işlemi önce yaptığı, hangi işlemi sonra
yaptığını bilmemiz gerekir. PHP'deki işlemlerin yapılış sırası şöyledir:
- ++ ve --
- / * %
- + -
- < <= => >
- == === | =
- &&
- ||
- = += -= /= %= .=
- and
- xor
- or
- r.
Sabit Değerler
İster Web, ister Web-dışı amaçlı olsun, bir
programın bazen başındanh sonuna kadar değeri değişmeyen değişkene ihtiyacı
olabilir. PHP'de sabit değerler, Script boyunca değişmeden kalır. Sabit değerler, değişkenlerden farklı şekilde
oluşturulur. Bunun için PHP'nin define() fonksiyonunu kullanırız. Bu fonksiyonun
yazım kuralı şöyledir:
define ("SABIT_DEGER", değer);Burada SABIT_DEGER yerine, tanımlamak istediğimiz sabit
değere vereceğimiz isim, değer yerine de sabit değeri yazarız. Örnek:
<?php
$Dolar_miktar = 125;
define ( "DOLAR_KURU", 625675);
$TL_Tutar = $Dolar_miktar * DOLAR_KURU;
print ($TL_Tutar);
?> Burada tanımladığımız DOLAR_KURU sabit-değeri,
tıpkı bir değişken gibi kullanılabilir. Fakat bir sabit değeri tanımladıktan
sonra içeriğini değiştiremezsiniz. Sabit değer ile aynı ismi taşıyan değişken
oluşturmak mümkündür; ancak aynı ismi taşısa da bir sabit ile değişkeni (birinin
adının önünde $ işareti bulunduğu için) karıştırmak kolay olmasa gerek. Tanımlanmış olan bir sabiti yeniden oluşturamayız;
ama buna teşebbüs ettiğimizde PHP hata vermez. Bir sabit değerin oluşturulmuş
olup olmadığını defined() fonksiyonu ile anlayabiliriz:
<?php
$Dolar_miktar = 125;
if (defined( "DOLAR_KURU" ))
{
echo ("Sabit değer daha önce tanımlanmıştı.<br>");
}
define ( "DOLAR_KURU", 625675);
$TL_Tutar = $Dolar_miktar * DOLAR_KURU;
print ($TL_Tutar);
?> Bu programı, bu şekilde ve define() komutunu en
üst satıra alarak çalıştırırsanız, ikinci çalıştırışınızda programın sabit
değeri yeniden oluşturmayı reddettiğini görecektiniz. Sabit değerleri, Web
sitesinde ziyaretçilerin girdiği verilerden alarak kendiliğinden oluşturan bir
program yazdığınızda, defined() fonksiyonu mantıksal hata yapmanızı önler. PHP'nin kullanılmaya hazır bir kaç sabit değeri
vardır. True (doğru) değeri 1 olan, False (yanlış) ise değeri sıfır sayısı veya
boş alfanümerik olan iki sabittir. Diğer sabitler şunlardır:
| __FILE__ |
O anda çalışmakta olan PHP dosyasının adı (kelimenin önünde ve sonunda iki alt-çizgi var); |
| __LINE__ |
Bu ifadenin yer aldığı satırın sayısı (kelimenin önünde ve sonunda iki alt-çizgi var); |
| PHP_VERSION |
PHP'nin sürümü (İki kelimenin arasında bir alt-çizgi var); |
| PHP_OS |
PHP'nin çalıştığı işletim sistemi (İki kelimenin arasında bir alt-çizgi var); |
Bunlara ek olarak, E_ERROR, E_WARNING, E_NOTICE ve
E_PARSE şeklinde hata durumunda hatanın çeşitli özelliklerini bildiren sabit
değerleri de kullanabiliriz. PHP hakkında çok daha geniş bilgiyi phpinfo()
fonksiyonunu çağırak alabilirsiniz.
Tarih ve Saat Verisi
PHP, o andaki zaman bilgisini, saat, dakika,
saniye ve salise olarak; tarih bilgisini yıl, ay, gün (sayı veya isim olarak),
programımızın herhangi bir yerinde bize bildirebilir. Bu bilgiyi Web sunucusunda
istediğimiz anda, muhtemelen sunucunun bulunduğu bilgisayarın sistem saatinden
alacak olan PHP, sunucu programında farklı bölgesel ayarlar için gerekli
düzenleme yapılmışsa, bu imkandan yararlanarak bize sunucunun değil, arzu
ettiğimiz bölgenin saat ve tarihini bildirebilir. Özellikle Türkiye'de olmayan bir sunucuda bu
imkanın bulunup bulunmadığını, ancak sınayarak veya sistem yöneticisine sorarak
öğrenebiliriz. Böyle bir sınama için şu kodları programınızın başına koyun:
<?php
setlocale ("LC_TIME", "TR");
print (strftime ("Türkçe bugün günlerden: %A "));
?>Browser penceresinde "Türkçe bugün günlerden
Sunday" yazısını okursanız, sunucuda Türkçe için bölgesel ayar desteği yok
demektir.PHP'nin zaman ve tarih belirlemekte
kullanabileceğiniz başlıca fonksiyonu getdate() ise şxöyle kullanılır.
getdate() Tarih ve saat bilgisini alır ve ve
vereceğiniz bir isimdeki dizi-değişkende kaydeder. Örnek:
$saat_tarih = getdate()
Bu durumda, $saat_tarih dizi değişkeninde
sırasıyla şu bilgiler yer alır:
| 32 |
saniye |
| 57 |
dakika |
| 6 |
saat |
| 30 |
ayın gün sayısı (1-31) |
| 0 |
haftanın gün sayısı (1-7) |
| 7 |
ayın sayısı (1-12) |
| 2000 |
yıl |
| 211 |
yılın kaçıncı günü |
| Sunday |
günün adı |
| July |
Ayın adı |
| 964929452 |
Unix sistemlerinde Epoch biçiminde
zaman bilgisi |
PHP'nin tarih ve saat bilgisini biçimlendirmede
yararlandığımız date() fonksiyonunu daha sonra metin biçimlerdirme bölümünde ele
alacağız.