Локальные переменные в PHP
Переменная, объявленная внутри пользовательской функции, считается локальной; другими словами, на нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из пользовательской функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.
Основное достоинство локальных переменных — отсутствие непредвиденных побочных эффектов, связанных со случайной или намеренной модификацией глобальной переменной. Рассмотрим следующий пример:
<?php
$a = 1; /* глобальная область видимости */
function Test()
{
echo $a; /* ссылка на переменную локальной области видимости */
}
Test();
?>
Этот скрипт не сгенерирует никакого вывода, поскольку выражение echo указывает на локальную переменную $a, а в пределах локальной области видимости ей не не было присвоено значение.
Подход к области видимости в PHP отличается от языка C в том, что глобальные переменные в C автоматически доступны функциям, если только они не были перезаписаны локальным определением. В PHP, если глобальная переменная будет использоваться внутри функции, она должна быть объявлена глобальной внутри нее:
<?php
$a = 1; /* глобальная область видимости */
function Test()
{
global $a; /* Объявляем переменную $a глобальной */
echo $a; /* ссылка на переменную локальной области видимости */
}
Test();
?>
В результате работы скрипта функция test() возвратит "1", поскольку мы объявили переменную $a глобальной, то есть, сделали переменную $a доступной для всей программы (скрипта).