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 )