Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Переменные в PHP

Статус
В этой теме нельзя размещать новые ответы.

Артур-1

Мастер
[HR][/HR]
Локальные переменные​
[HR][/HR]
Переменная, объявленная внутри пользовательской функции, считается локальной; другими словами, на нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из пользовательской функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.

Основное достоинство локальных переменных — отсутствие непредвиденных побочных эффектов, связанных со случайной или намеренной модификацией глобальной переменной. Рассмотрим следующий пример:
Код:
<?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 доступной для всей программы (скрипта).
[HR][/HR]
Глобальные переменные​
[HR][/HR]
Глобальные переменные - это переменные, которые доступны всей программе, включая подпрограммы (пользовательские функции).
Для PHP все объявленные и используемые в функции переменные по умолчанию локальны для функции. То есть, по умолчанию нет возможности изменить значение глобальной переменной в теле функции.
Если вы в теле пользовательской функции будете использовать переменную с именем, идентичным имени глобальной переменной (находящейся вне пользовательской функции), то никакого к отношения глобальной переменной эта локальный переменная иметь не будет. В данной ситуации в пользовательской функции будет создана локальная переменная с именем, идентичным имени глобальной переменной, но доступна данная локальная переменная будет только внутри этой пользовательской функции.
Поясним данный факт на конкретном примере:
Код:
<?php 
$a = 100;

function funct() {
$a = 70;
 echo "<h4>$a</h4>";
}
funct();
echo "<h2>$a</h2>";
?>
Сценарий выведет сперва 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;
?>
[HR][/HR]
Статические переменные​
[HR][/HR]
Помимо локальных и глобальных переменных, в PHP существует еще один тип переменных - статические переменные.
Если в теле пользовательской функции объявлена статическая переменная, то компилятор не будет ее удалять после завершения работы этой функции.
Объявление статических переменных:
Код:
<?php
function funct(){
     static $int = 0;          // верно
     static $int = 1+2;        // неверно  (поскольку это выражение)
     static $int = sqrt(121);  // неверно  (поскольку это тоже выражение)

     $int++;
     echo $int;
}
?>
Пример работы пользовательской функции, содержащей статические переменные:
<?php
function funct()
{
static $a;
$a++;
echo "$a";
}
for ($i = 0; $i++<10;) funct();
?>
Данный сценарий выводит строку:
Код:
1 2 3 4 5 6 7 8 9 10
Если мы удалим инструкцию static, будет выведена строка:
Код:
1 1 1 1 1 1 1 1 1 1
Это связано с тем, что переменная $a будет удаляться при завершении работы функции и обнуляться при каждом ее вызове. Переменная $a инкрементируется сразу после обнуления, а только потом выводится.
[HR][/HR]
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу