X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> "Новичковый" вопрос по php
NetGod
NetGod
Topic Starter сообщение 28.9.2008, 12:55; Ответить: NetGod
Сообщение #1


Программировал на си и паскале, там оказалась чуть другая концепция действий с переменными, объявлениями и инициализацией. Вопрос возник тогда, когда пришлось обратиться к глобальной переменной из функции
<?php
function my_func()
{
//Здесь нужно глобальную переменную my_var инкрементировать
$my_var++ // Это не правильно, я просто показываю что хочу сделать.
}
$my_var = 8; //Вот собсна и она
my_func();
echo $my_var;
?>
Объясните пожалуйста:)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 28.9.2008, 13:16; Ответить: Webmaster_hb
Сообщение #2


RTFM
Область видимости переменной


Область видимости переменной - это среда, в которой она определена. В большинстве случаев все переменные PHP имеют единую область видимости. Эта единая область видимости охватывает также включаемые (include) и требуемые (require) файлы. Например:
<?php
$a
= 1;
include
"b.inc";
?>

Здесь переменная $a будет доступна внутри включенного скрипта b.inc. Однако, внутри определенных пользователем функций вводится локальная область видимости функции. Любая, используемая внутри функции переменная, по умолчанию ограничена локальной областью видимости функции. Например:
<?php
$a
= 1; /* глобальная область видимости */

function Test()
{
echo
$a; /* ссылка на переменную локальной области видимости */
}

Test();
?>

Этот скрипт не сгенерирует никакого вывода, поскольку выражение echo указывает на локальную версию переменной $a, а в пределах этой области видимости ей не не было присвоено значение. Возможно вы заметили, что это немного отличается от языка C в том, что глобальные переменные в C автоматически доступны функциям, если только они не были перезаписаны локальным определением. Это может вызвать некоторые проблемы, поскольку люди могут нечаянно изменить глобальную переменную. В PHP, если глобальная переменная будет использоваться внутри функции, она должна быть объявлена глобальной внутри нее.
Ключевое слово global




Сначала пример использования global:

Пример 12.1. Использование global
<?php
$a
= 1;
$b = 2;

function
Sum()
{
global
$a, $b;

$b = $a + $b;
}

Sum();
echo
$b;
?>



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

Пример 12.2. Использование $GLOBALS вместо global
<?php
$a
= 1;
$b = 2;

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

Sum();
echo
$b;
?>



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

Пример 12.3. Суперглобальные переменные и область видимости
<?php
function test_global()
{
// Большинство предопределенных переменных не являются
// "супер" и чтобы быть доступными в локальной области
// видимости функции требуют указания 'global'.
global $HTTP_POST_VARS;

echo
$HTTP_POST_VARS['name'];

// Суперглобальные переменные доступны в любой области
// видимости и не требуют указания 'global'.
// Суперглобальные переменные доступны, начиная с PHP 4.1.0
echo $_POST['name'];
}
?>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Exterior
Exterior
сообщение 28.9.2008, 13:25; Ответить: Exterior
Сообщение #3


[php]<?php

$my_var = 1;

function my_function($my_var2)
{
$my_var2++;
return $my_var2;
}

echo my_function($my_var); // вернет 2

?>[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
NetGod
NetGod
Topic Starter сообщение 28.9.2008, 13:28; Ответить: NetGod
Сообщение #4


Webmaster, То есть в функции global $my_var; это не объявление переменной, а указание на то, что будет использоваться переменная из глобального пространства имен?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 28.9.2008, 23:21; Ответить: Webmaster_hb
Сообщение #5


ага

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Хостинг "Hostland" - качественный хостинг по разумным ценам и со своей Панелью Управления
0 artmeteor 580 18.4.2024, 22:46
автор: artmeteor
Открытая тема (нет новых ответов) ⭐⭐⭐ Google Voice | Gmail - OLD аккаунты "SMS и звонки" ⭐⭐⭐
15 Chekon 4470 18.4.2024, 12:00
автор: Chekon
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4100 18.4.2024, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
15 Tia2 2393 17.4.2024, 0:54
автор: diviner99
Опрос (нет новых голосов) Опрос: Результаты в упражнении "Жим лёжа" у вэбмастеров
35 Room 4534 13.3.2024, 13:10
автор: Room


 



RSS Текстовая версия Сейчас: 25.4.2024, 20:33
Дизайн