Değişkenler sizin tarafınızdan atanan değerleri tutan ya da fonksiyonlar ve diğer kod bloklarından gelen verilerin kaydedildiği depolardır.
Değişken isimleri $ işareti ile başlamak ve bir harf ya da _ ile devam etmek zorundadır. Değişken isimleri bir rakam ile başlayamaz, ama devamında kullanılabilir. Değişken isimleri büyük-küçük harf duyarlıdır. Yani $Degisken ile $degisken iki farklı değişkendir.
Ayrıca değişkenler kapsama alanı kurallarına tabidir. Yani lokal alandaki bir değişkene globalden ulaşmak mümkün değildir. Örneğin;
<?php function ilk(){ $a=5; } ilk(); echo $a; ?>
$a değişkenini bir fonksiyon içinde tanımladığımız ve bu alan lokal olduğu için global alanda verdiğimiz ekrana yazdırma komutu $a değişkenini bulamaz ve yazdıramaz. Dolayısıyla hata verir:
Notice: Undefined variable: a in /opt/lampp/htdocs/php/degiskenler.php on line 22
Undefined Variable – Tanımlanmamış Değişken hatası alırsınız.
Eğer ihtiyaç duyarsanız PHP’de değişken içinde de değişken kullanabilirsiniz. Örneğin;
<?php $uye="Oben SEVEN"; $mesaj="Merhaba " . $uye . " ! Web sitemize Hoş Geldin."; echo $mesaj; ?>
Burada gördüğünüz gibi web sitesine giriş yapan kullanıcıya bir mesaj görüntülemek istiyoruz ve bunu yaparken her bir üye için ayrı bir mesaj oluşturmak yerine, $mesaj değişkeni içine giriş yapan üyenin kullanıcı adını alan bir değişkeni yerleştirmemiz yeterli oluyor. Şimdi $uye değişkeninin değeri değiştiğinde $mesaj değişkeni de otomatik olarak değişmiş olacak.
PHP kodları yukarıdan aşağıya doğru okuyan bir dildir. Yani siz dosyanın başında tanımladığınız bir değişkeni kullandıktan sonra sayfanın ilerleyen kısımlarında aynı değişkene başka bir değer atayarak tekrar kullanabilirsiniz. Yani değişkenin değerini değiştirebilirsiniz. Ancak yukarıdan aşağıya doğru dosya okunduğu için yeniden atama öncesindeki işlemler bu değişiklikten etkilenmezler. Örneğin;
<?php $a=3; $b=$a; echo $a+$b; echo "<br />"; $a=4; echo $a+$b; ?>
kodu için çıktı şu şekilde olacaktır:
6 7
$b değişkeninin değerini $a değişkeninin aynısı olacak şekilde atayıp toplama sonucunu ekrana yazdırdık. Sonra $a değişkeninin değerini değiştirip aynı toplamı tekrar ekrana yazdırdık ama bu sefer $b değişkenine $a değişkenin yeni değerini atamadan önceki değeriyle toplamayı gerçekleştirdi.
Çünkü kodlar yukarıdan aşağıya doğru çalıştırıldığı için $b değişkeni kendinden önceki $a değişkenini görmektedir.
Ancak en baştan $b değişkenini $a değişkeninin değerini al şeklinde atama yaparken referanslı atama dediğimiz & sigesini kullanarak atama yapar isek, bu durumda kapsama alanının neresinde $a değişkeni değiştirilirse değiştirilsin $b değişkeni de ona uygun olarak güncellenecektir.
<?php $a=3; $b=&$a; echo $a+$b; echo "<br />"; $a=4; echo $a+$b; ?>
kodu için çıktı şu şekilde olacaktır:
6 8
Gördüğünüz gibi referanslı atama yapıldığı için $b değişkeni $a değişkeninin en son değerini görerek işlem gerçekleştirdi.
Bir başka değişken özelliği de değişken değişken tanımlamadır. Bildiğiniz üzere değişkenler kod içinde tekrar tekrar farklı bir değer atanarak kullanılabiliyordu. Yukarıdaki normal atama işleminde gördüğünüz gibi $a değişkeni önce 3 değerini taşıyarak işlem gerçekleştirmiş sonra değeri değiştirilip 4 yapılarak tekrar farklı bir işlemde kullanılmıştı. Değişken değişken tanımlarken $a değişkeninin önüne bir $ işareti daha getiriyoruz ve bu durumda tıpkı değişken adı farklıymış gibi hem ilk değeri hem de ikinci atanan değeri kullanabiliyoruz. Örneğin;
<?php $a="Oben"; $$a="Seven"; echo $a; echo "<br />"; echo $$a; ?>
kodu için çıktı şu şekilde olacaktır:
Oben Seven
Burada biz değişken değişken olan $$a değişkenine istersek aynı ismi taşıyan ilk değişkenin değeri ile de ulaşabiliriz. Yani;
<?php $a="Oben"; $$a="Seven"; echo $a; echo "<br />"; echo $Oben; ?>
kodu için çıktı şu şekilde olacaktır:
Oben Seven
Her ne kadar farklı bir değişken adı kullanmak var iken neden böyle bir şeyi tercih edelim diye düşünüyor olsanız da bazen yeni bir değişken ismi vermek yerine değişkenler arasında ilişki kurabilmek için değişkenin önceki değerini değişken adı olarak kullanmak isteyeceğiniz durumlar olabilir. Bu gibi durumlarda bu yapı kullanılabilir.
Esasında metin içerikleri de bir dizidir. Cümleler harflerden oluşan bir dizidir. Öyleyse biz metin içindeki belirli bir harfe dizinin elemanlarına erişiyormuş gibi ulaşabiliriz. Örneğin;
<?php $a="Oben Seven"; echo $a[2]; ?>
kodu için çıktı şu şekilde olacaktır:
e
Bağlantıda Kalalım