PHP-ban a változókat egy dollárjel utáni változónév jelöli. A változónevek case sensitiv-ek, vagyis kisbetű-nagybetű különböző.
A változónevekre a PHP más jelzőivel azonos szabályok vonatkoznak. Egy érvényes változónév betűvel vagy aláhúzással kezdődik, amit tetszőleges számú betű, szám vagy aláhúzás követ. Reguláris kifejezéssel kifejezve ez a következőt jelenti: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Megjegyzés: Ebben az esetben egy betű lehet angol betű karakter a-z-ig és A-Z-ig, valamint az ASCII karakterek 127-es kódtól 255-ös kódig (0x7f-0xff).
1 2 3 $var = "Géza"; 4 $Var = "János"; 5 echo "$var, $Var"; // kiírja, hogy "Géza, János" 6 7 $4site = 'ez nem jó'; // nem érvényes, mert számmal kezdődik 8 $_4site = 'ez ok'; // érvényes, aláhúzással kezdődik 9 $täyte = 'mansikka'; // érvényes, az 'ä' az ASCII 228-as karaktere 10 $tükörfúrógép = "árvíztűrő"; // érévényes, ellenőrizheted egy ASCII táblában 11 12 |
PHP3-ban a változókhoz mindig értékek tartoznak. Vagyis ha egy kifejezést rendelünk egy változóhoz, az eredeti kifejezés egészének értéke másolódik a célváltozóba. Ez azt jelenti, hogy ha például egy változó értékét egy másikhoz rendeljük, egyikük megváltozása sincs hatással a másikra. Ha több infót szeretnél az ilyen jellegű hozzárendelésekről, nézd meg a Kifejezések című részt.
PHP4-ben lehetőség van egy másik hozzárendelési módra: változó cím szerinti átadására. Ez azt jelenti, hogy az új változó egyszerűen hivatkozik (más szóval "alias lesz", vagy "rá mutat") az eredetire. Az új változón végzett változtatások az eredetit is érintik és fordítva. Ez azt is jelenti, hogy nem történik másolás; ugyanis a hozzárendelés sokkal gyorsabban történik. Igaz ugyan, hogy ez a sebességnövekedés csak "szoros" ciklusokban, vagy nagy tömböknél, objektumoknál jelentkezik. [azért függvényeknél elég hasznos tud lenni, hogy nem kell egy nagy tömböt átpasszírozni a stacken a függvény számára.]
Ha egy referenciának szeretnénk értéket adni, egyszerűen írjunk egy "and" (&) jelet az átadandó változó neve elé. [C rulez] Például az alábbi kód kiírja kétszer, hogy 'Nevem Bob':
1 2 3 <?php 4 $foo = 'Bob'; // 'Bob' hozzárendelése $foo-hoz 5 $bar = &$foo; // Hivatkozás $foo-ra $bar-ban. 6 $bar = "Nevem $bar"; // $bar megváltoztatása... 7 echo $foo; // $foo is megváltozik. 8 echo $bar; 9 ?> 10 11 |
Itt egy fontos dolgot kell megjegyeznünk: csak megnevezett változókra lehet referenciát létrehozni.
1 2 3 <?php 4 $foo = 25; 5 $bar = &$foo; // Ez egy érvényes hozzárendelés. 6 $bar = &(24 * 7); // Érvénytelen; referencia egy névtelen kifejezésre. 7 8 function test() { 9 return 25; 10 } 11 12 $bar = &test(); // Érvénytelen. 13 ?> 14 15 |