Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
овы языка PHP 190 
Локальные переменные 
Наконец-то мы подошли вплотную к вопросу о "жизни и смерти" переменных. Дейст- 
вительно, во многих приводимых выше примерах мы рассматривали аргументы 
функции (передаваемые по значению, а не по ссылке) как некие временные объекты, 

которые создаются в момент вызова и исчезают после окончания функции. Например 
(листинг 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. 
Собственно говоря, это нас устраивает. Действительно, мало ли какие имена пере- 

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

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

Глава 11. Функции и области видимости 191 
Глобальные переменные 
Если вы, прочитав последние строки, уже начали испытывать сочувствие к функциям 

в PHP (или, если вы прикладной программист, сочувствие к разработчикам PHP), то 

спешу вас заверить: разумеется, в PHP есть способ, посредством которого функции 

могут добраться и до любой глобальной переменной в программе (не считая, 
конечно, 
передачи параметра по ссылке). Однако для этого они должны проделать определен- 

ные действия, а именно: до первого использования в своем теле внешней 
переменной 
объявить ее "глобальной" (листинг 11.10): 
Листинг 11.10. Использование global 
function Silly() 
{ global $i; 
$i=rand(); 
echo $i; 
} 
for($i=0; $i!=10; $i++) Silly(); 
Вот теперь-то переменная $i будет везде едина: что в функции, что во внешнем 
цик- 
ле (для последнего это приведет к немедленному его "зацикливанию", во всяком 
слу- 
чае, на ближайшие несколько минут, пока rand() не выкинет 10). А вот еще один 
пример, который показывает удобство использования глобальных переменных внутри 
функции (листинг 11.11): 
Листинг 11.11. Пример функции 
$Monthes[1]="Январь"; 
$Monthes[1]="Февраль"; 
... и т. д. 
$Monthes[12]="Декабрь"; 
. . . 
// Возвращает название месяца по его номеру. Нумераци
 
<<-[Весь Текст]
Страница: из 287
 <<-