8. Fejezet. Változók

Tartalom
Alapok
Előre definiált változók
Változók hatásköre
Változó változók
Változók a PHP-n kívülről

Alapok

PHP-ban a változókat egy dollárjel utáni változónév jelöli. A változónevek érzékenyek kis- és nagybetűk különbözőségére.

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 az angol abc egy betűje a-z-ig és A-Z-ig, valamint a 127-től 255-ig terjedő (0x7f-0xff) ASCII kódú karakterek.

$var = "Géza";
$Var = "János";
echo "$var, $Var";           // kiírja, hogy "Géza, János"

$4site        = 'ez nem jó'; // nem érvényes, mert számmal kezdődik
$_4site       = 'ez ok';     // érvényes, aláhúzással kezdődik
$täyte        = 'mansikka';  // érvényes, az 'ä' az ASCII 228-as karaktere
$tükörfúrógép = "árvíztűrő"; // érvényes, ellenőrizheted egy ASCII táblában

PHP 3-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. Nézd át Kifejezések c. fejezetet, ahol az ilyen jellegű hozzárendelésekről több információ található.

PHP 4-ben lehetőség van egy másik hozzárendelési módra: változó referencia szerinti hozzárendelésére. 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; ekképpen a hozzárendelés gyorsabban történik meg. Igaz ugyan, hogy ez a sebességnövekedés csak "feszes" ciklusokban vagy nagy tömböknél ill. objektumok átadásakor jelentkezik.

Referencia szerinti értékadáshoz egyszerűen & jelet kell az átadandó változó neve elé írni. Az alábbi kód - például - kiírja kétszer, hogy 'Nevem Bob':

<?php
$ize = 'Bob';              // 'Bob' hozzárendelése $ize-hoz
$bigyo = &$ize;            // Hivatkozás $ize-ra $bigyo-ban.
$bigyo = "Nevem $bigyo";   // $bigyo megváltoztatása...
echo $ize;                 // $ize is megváltozott
echo $bigyo;
?>

Fontos megjegyezni, hogy csak megnevezett változókra lehet referenciát létrehozni.

<?php
$ize = 25;
$bigyo = &$ize;      // Ez egy érvényes hozzárendelés.
$bigyo = &(24 * 7);  // Érvénytelen referencia egy névtelen kifejezésre.

function test()
{
   return 25;
}

$bigyo = &test();    // Érvénytelen.
?>