Forum und email
Proměnné

Kapitola 12. Proměnné

Základy

Proměnné jsou v PHP reprezentovány znakem dolaru, následovaným názvem příslušné proměnné. V názvech proměnných se rozlišuje velikost písmen.

Názvy proměnných jsou podřízeny stejným pravidlům jako jiná návěští v PHP. Platný název proměnné začíná písmenem nebo podtržítkem, následovaným libovolným počtem písmen, číslic nebo potržítek. Jako regulární výraz to lze zapsat takto: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Poznámka: Pro naše účely zde budeme za písmena považovat znaky a-z, A-Z a ASCII znaky od 127 do 255 (0x7f-0xff).

$var = "Bob";
$Var = "Joe";
echo "$var, $Var";      // vypíše "Bob, Joe"

$4site = 'not yet';     // neplatné; začíná číslicí
$_4site = 'not yet';    // platné; začíná podtržítkem
$täyte = 'mansikka';    // platné; 'ä' je ASCII 228.

V PHP 3 mají proměnné vždy přiřazenu hodnotu. To znamená, že když přiřadíte výraz do proměnné, celá hodnota původního výrazu se zkopíruje do cílové proměnné. Tedy, například, po přiřazení hodnoty jedné proměnné do druhé, změna jedné z nich se na druhé neprojeví. Více informací o tomto způsobu přiřazení viz Výrazy.

PHP nabízí jiný způsob přiřazení hodnot proměnným: přiřazení odkazu. To znamená, že nová proměnná jednoduše odkazuje (jinými slovy, "stává se aliasem" nebo "ukazuje na") na původní proměnnou. Změny na nové proměnné se projeví na té původní a naopak. To také znamená, že se nic nekopíruje; proto je přiřazení rychlejší. Avšak toto zrychlení bude zjistitelné pouze v těsných cyklech nebo při přiřazování velkých polí či objektů.

Pro přiřazení odkazu stačí jednoduše před proměnnou, která bude přiřazována (zdrojová proměnná), předřadit ampersand (&). Například následující kus kódu vypíše dvakrát 'Jmenuji se Bob':

<?php
$foo
= 'Bob';              // Přiřadí hodnotu 'Bob' do $foo
$bar = &$foo;              // Odkaz $foo přes $bar.
$bar = "Jmenuji se $bar";  // Změna $bar...
echo $bar;
echo
$foo;                 // $foo je také změněno.
?>

Jednou z důležitých věcí, které je třeba si uvědomit, je to, že přes odkazy lze přiřazovat pouze pojmenované proměnné.

<?php
$foo
= 25;
$bar = &$foo;      // Toto je platné přiřazení.
$bar = &(24 * 7);  // Neplatné; odkazuje se nepojmenovaný výraz.

function test()
{
   return
25;
}

$bar = &test();    // Neplatné.
?>