Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Изучение PHP  »  Переменные языка PHP  »  Глобальные переменные в PHP
 
 

Глобальные переменные в PHP

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

Локальные переменные - переменные, определенные внутри подпрограммы (пользовательской функции). Они доступны только внутри функции, в которой они определены.

Для PHP все объявленные и используемые в функции переменные по умолчанию локальны для функции. То есть, по умолчанию нет возможности изменить значение глобальной переменной в теле функции.

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

Поясним данный факт на конкретном примере:

<?php
$a = 100;

function funct() {
$a = 70;
 echo "<h4>$a</h4>";
}
funct();
echo "<h2>$a</h2>";
?>

Сценарий выведет сперва 70, а затем 100:

70
100

Для избавления от приведенного недостатка, в PHP существует специальная инструкция global, позволяющая пользовательской функции работать с глобальными переменными. Рассмотрим данный принцип на конкретных примерах:

<?php
$a 
1;
$b 2;

function 
Sum()
{
     global 
$a$b;

    
$b $a $b;


Sum();
echo 
$b;
?>

Вышеприведенный скрипт выведет "3". После определения $a и $b внутри функции как global все ссылки на любую из этих переменных будут указывать на их глобальную версию. Не существует никаких ограничений на количество глобальных переменных, которые могут обрабатываться пользовательскими функциями.

Второй способ доступа к переменным глобальной области видимости - использование специального, определяемого PHP массива $GLOBALS. Предыдущий пример может быть переписан так:

Использование $GLOBALS вместо global:

<?php
$a 
1;
$b 2;

function 
Sum()
{
    
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];


Sum();
echo 
$b;
?>

$GLOBALS - это ассоциативный массив, ключом которого является имя, а значением - содержимое глобальной переменной. Обратите внимание, что $GLOBALS существует в любой области видимости, это объясняется тем, что этот массив является суперглобальным. Ниже приведен пример, демонстрирующий возможности суперглобальных переменных:

<?php
function test_global()
{
    
// Большинство предопределенных переменных не являются
     // "супер" и чтобы быть доступными в локальной области
     // видимости функции требуют указания 'global'.
    
global $HTTP_POST_VARS;
    
     echo 
$HTTP_POST_VARS['name'];
    
    
// Суперглобальные переменные доступны в любой области
     // видимости и не требуют указания 'global'.
     // Суперглобальные переменные доступны, начиная с PHP 4.1.0
    
echo $_POST['name'];
}
?>

Смотрите также:

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

 <<< Назад
(Локальные переменные в PHP) 
 Содержание 
 Вперед >>>
(Статические переменные в PHP) 

Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS