САМОУЧИТЕЛЬ PHP 4

       

Локальные переменные


Наконец-то мы подошли вплотную к вопросу о "жизни и смерти"

переменных. Действительно, во многих приводимых выше примерах мы рассматривали аргументы функции (передаваемые по значению, а не по ссылке) как некие временные объекты, которые создаются в момент вызова и исчезают после окончания функции. Например (листинг11.8):

Листинг 11.8. Локальные переменные (параметры)

$a=100;  // Глобальная переменная, равная 100

function Test($a)

{ echo $a; // выводим значение параметра $a

  // Этот параметр не имеет к глобальной $a никакого отношения!

  $a++; // изменяется только локальная копия значения, переданного в $a

}

Test(1);  // выводит 1

echo $a;  // выводит 100 — глобальная $a, конечно, не изменилась

В действительности такими же свойствами будут обладать не только аргументы, но и все другие переменные, инициализируемые или используемые внутри функции. Вот пример (листинг 11.9):

Листинг 11.9. Локальные переменные

function Silly()

{ $i=rand();   // записывает в $i случайное число

  echo $i;     // выводит его на экран

  // Эта $i не имеет к $i никакого отношения!

}

for($i=0; $i!=10; $i++) Silly();

Здесь переменная $i в функции будет не той переменной $i, которая используется в программе для организации цикла. Поэтому, собственно, цикл и проработает только 10 "витков", напечатав 10 случайных чисел (а не будет крутиться долго и упорно, пока "в рулетке" функции rand() не выпадет 10.

Собственно говоря, это нас устраивает. Действительно, мало ли какие имена переменных использует функция для своих личных целей... Какое до этого дело программе (которая вообще может быть написана другим человеком)? Вот и получается, что каждая функция — "узник"

в своем тесном мирке, живущий и обменивающийся с "окружающим миром" через свои параметры и возвращаемое значение.



Содержание раздела