Глава 12. Променливи

Съдържание
Основи
Предефинирани променливи
Обхват на променливи
Променливи променливи
Външни променливи за PHP

Основи

Променливите в PHP се представят чрез знака за долар, последван от името на променливата. Името на променливата е чувствително към регистъра.

Имената на променливите следват същите правила като другите етикети в PHP. Валидно име на променлива започва с буква или подчертавка, последвана от произволен брой букви, цифри или подчертавки. Като регулярен израз, това би могло да бъде представено така: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Забележка: В случая, под буква се разбират a-z, A-Z и ASCII знаците от 127 до 255 (0x7f-0xff).

За информация относно функциите, свързани с променливи, вижте Справочник на Функциите за Променливи.

<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // извежда "Bob, Joe"

$4site = 'not yet';     // невалидно; започва с цифра
$_4site = 'not yet';    // валидно; започва с подчертавка
$tдyte = 'mansikka';    // валидно; 'д' е (Разширен) ASCII 228.
?>

В PHP 3, променливите винаги се присвояват по стойност. С други думи, когато присвоявате израз на променлива, цялата стойност на оригиналния израз се копира в променливата. Това означава, например, че след присвояване стойността на една променлива на друга, променянето на една от тези променливи няма да се отрази на другата. За повече информация относно този тип присвояване, вижте главата за Изрази.

От PHP 4, PHP предлага друг начин за присвояване на стойности на променливи: присвояване по референция. Това означава, че новата променлива просто референсира (с други думи, "става псевдоним на" или "сочи към") оригиналната променлива. Промени в новата променлива влияят на оригиналната и обратно. Това също означава, че не се осъществява копиране; по този начин присвояването става по-бързо. Все пак ускоряване вероятно би било забелязано само в тежки цикли или при присвояване на големи масиви или обекти.

За да присвоите по референция, просто сложете амперсанд (&) в началото на променливата, която се присвоява (променливата - източник). Например, следващото парче код извежда 'My name is Bob' два пъти:

<?php
$foo = 'Bob';              // Присвояване на стойността 'Bob' на $foo
$bar = &$foo;              // Указване на $foo чрез $bar. (Присвояване по референция)
$bar = "My name is $bar";  // Променяне на $bar...
echo $bar;
echo $foo;                 // $foo е променена също.
?>

Важно нещо за отбелязване е, че само именувани променливи могат да бъдат присвявани по референция.

<?php
$foo = 25;
$bar = &$foo;      // Това е валидно присвояване.
$bar = &(24 * 7);  // Невалидно; указва безименен израз.

function test()
{
   return 25;
}

$bar = &test();    // Невалидно.
?>