Глобальные переменные в php
Среда, 11 августа 2010 г.Рубрика: PHP программирование -> Функции
Метки: глобальные переменные
Просмотров: 1172
Подписаться на комментарии по RSS
Давайте попробуем вывести переменную $a со значением 5:
<?php $a = 5; echo $a;
А теперь давайте попробуем прописать в функции переменной $a значение
10:
<?php
$a = 5;
function myfunc () {
$a = 10;
}
echo $a;
Но почему то у нас выведится 5, а не 10, ответ на вопрос прост - все
переменные которые находятся за функцией называются глобальными - что
значит они используются во всём скрипте, а так как функция является (
подпрограммой ), то и переменные у неё должны быть свои, а именно
локальные, которые будут использоваться в функцие, а теперь давайте
попробуем объявить переменную $a в функцие как глобальную, и изменим её.
Объявление делается при помощи команды global - после которой идут наши
переменные, которые можно будет изменять в функцие, и значения их будут
как в самом скрипте, а именно 5:
<?php
$a = 5;
function myfunc () {
global $a;
$a = 10;
}
myfunc();
echo $a;
Как только мы выполним скрипт у нас на экране появится 10, а теперь
давайте разберём что мы написали
Сначала переменной $a присваиваем значение 5, потом пишем функцию, в
которой объявляем переменную $a как глобальную, что значит теперь у нас в
функцие $a используется со значением 5, и изменив её в функцие мы
изменим её во всём скрипте.
Дальше присваиваем переменной $a значение 10, после вызываем нашу
функцию, тем самым изменяем значение переменной $a с 5 на 10, после
выводим переменную $a.
Примерно так действует команда global, давайте ещё раз объясню:
В функцие используются свои переменные отдельные от всего скрипта, что
значит, если мы в функцие переменной скажем $a присвоим значение 10, а
до этого в скрипте уже была переменная $a со значением 5, то после
вызова функции, мы попробуем вывести переменную $a - то её значение
будет равно 5, а не 10, а всё из-за того что функция является так
называемой подпрограммой, у которой свои переменные - локальные, и они
не относятся ко всему скрипту, а во всём скрипте используются глобальные
переменные, так вот - если мы хотим, чтобы в функцие можно было бы
изменять глобальные переменные, то нам нужна команда global, при помощи
неё мы объявим переменные как глобальные, и можно будет редактировать
переменные во всём скрипте, которые были объявлены нами командой global.
И также можно при помощи аргументов дать понять что эти переменные
глобальные, давайте рассмотрим пример:
<?php
$a = 5;
function myfunc (&$a) {
$a = 10;
}
myfunc($a);
echo $a;
Здесь при помощи значка & - это так называемый указатель - мы даём
понять, что переменная глобальная и переменная локальная ( которая
используется в функцие ) содержат одно и тоже значение - получается что
эти аргументы, являются одной и тойже переменной, и теперь изменив её в
функцие мы изменим её во всём скрипте.


О что-то новенькое спасибо за информацию!!!