Degisken Degiskenler
PHP'de normal bir degisken su sekilde atanir:
$a = "merhaba";
Degisken degiskenlerin ozelligi degisken adinin dinamik olarak
degistirilerek kullanilabilmesidir. Kisaca bir degisken degisken,
bir degiskenin degerini alarak onu bir degisken adiymis gibi
kullanir.
Ornegin yukaridaki ornekteki 'merhaba' kelimesini dinamik
olarak bir degisken adi gibi kullanmak istersek asagidaki
sekilde iki dolar isareti kullanarak yazmaliyiz:
$$a =
"dunya";
Bu asamada iki tane degiskenimiz var. Bunlardan birincisi
'$a' degiskeni (degeri 'merhaba') digeri ise '$merhaba' degiskeni
(degeri 'dunya').
Bu yuzden asagidaki iki satir ayni sonucu verir:
# Ornek 1:
echo "$a ${$a}";
# Ornek 2:
echo "$a $merhaba";
# Cikti : merhaba dunya
Degisken degiskenleri array'lerde kullanirken syntax'dan dogabilecek
bir kargasayi onlemek icin {} ayrac karakterleri kullanilir.
Ornegin $$a[1] dedigimizde PHP $$a degiskeninin 1 indexli
elemanini mi yoksa $a[1] degiskenini mi istedigimizi anlayamaz.
Boyle sartlarda (veya karismamasi icin diledigimiz zaman)
eger su formatlari kullanmalisiniz.
${$a[1]} // Burda acik bir sekilde once $a[1]'in degeri saptanip
sonra o isimdeki degiskene ulasilacak
${$a}[1] // Bu sekil kullandigimizda once $a'nin degeri
saptanip sonra o isimdeki array'in ilk degiskenine ulasilacak
Su anda bu fonksiyonun geregini anlamasaniz bile ileride yeri
geldiginde el altinda bulunmasi bir cok programin yazimini
ve problemin cozumunu kolaylastiracaktir.
Dizideki bir element'e birden fazla index atamak
PHP el kitapcigina(PHP4 Manual) bakildigi zaman bu programlama
dilinin "referans" sistemini destekledigi gorulur.Bu tam olarak
ne demektir anlatalim :
Bu destek sayesinde teorik olarak,yaratilan bir elemenet dizinin
bir baska uyesine sanal olarak referans olarak kullanilabilir.(daha
fazla bilgi icin manuelden & operatorune bakiniz)
Bir kod parcasi uzerinde aciklayalim,
<?php
//TextIndex ile indexlenmis bir element yaratalim.
$TestDizisi["TextIndex"] = "Bu bir test elementi";
//Simdi yaratacagimiz elemente 0 numerik indexi verelim fakat
deger olarak bir once yarattigimiz dizi elementini gecirelim.
$TestDizisi[0] = &$TestDizisi["TextIndex"];
//Simdide elementin indexini 0 ile degistirelim.
$TestDizisi[0] = "ikinci elementi resetliyoruz";
//TextIndex indexine sahip elementin degeride otomatikman
degismis oldu :)
print "Test : " . $TestDizisi["TextIndex"] . "\n";
//Dizinin butun elemanlari icin icerikleri goster.Bu sayede
bu yazilan kodun nasil calisitiginida gormus olacagiz.
print_r($TestDizisi);
?>
Cikti su sekilde olacaktir:
Test:ikinci elementi resetliyoruz
Array ( [TextIndex] => ikinci elementi resetliyoruz [0]
=> ikinci elementi resetliyoruz )
Ornek Program
http://www.turk-php.com/ornekler/deg_ref.php
http://www.turk-php.com/ornekler/deg_ref.phps
Kalin saglicakla,
Oktay Altunergil
15 Mayis 2001
oktay@turk-php.com
http://www.turk-php.com/
|