Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив переменных изнутри функции 
:(
    Опции темы
szz
Дата 17.8.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Как известно, все переменные, которые мы объявляем глобально, доступны в массиве $_GLOBALS

  Но где мне получить аналогичный список, но только из тех переменных, которые имели место в функции?
Т.е так:
Код

function my_function(){
   $var1 = 'hello';
   $var2 = 'world';
   $var3 = '!';
   foreach($_FUNC_VARS as $k => $v){
         echo "$k = $v \n";
   }
}

  Этот гипотетический массив, который я использовал ($_FUNC_VARS) и есть то, что мне нужно.
то есть вызов этой функции сверху должен выдать мне:
Код

var1 = hello
var2 = world
var3 = !
Не предлагайте мне создавать массив самому и пользоваться им, я и сам это понимаю, меня интересует именно встроенные возможности.  Ведь в глобальной области мы тоже можем создать один массив и все в него пихать - и тем не менее $_GLOBALS существует


--------------------
PM   Вверх
vasac
Дата 17.8.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



нет такого.
$_GLOBALS существует не в последнюю очередь для того, чтобы обеспечить доступ к глобальному контексту из функции.
А в функции он зачем?
PM WWW   Вверх
szz
Дата 18.8.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Например для того, чтоб перевести все переменные из включенного файла ВНУТРИ ФУНКЦИИ в их глобальную среду. Заранее мы не знаем какие переменные определены во включаемом файле, ведь так?
Вот, например у нас есть файл foo.php
Код

<?$foo_var = 'Hello';
$foo_other_var = 'World';?>
 А вот файл, который его включает в функции:
Код

function func_with_include($file){
   // do domething
   include($file);
   echo "отсюда мы видим: $foo_var";
   // do something else
}

func_with_include('abc.php');
echo "а отсюда - нет: $foo_var";

  Если был тот массив, о котором я говорю, то эту функцию можео было бы сделать так:
Код

function func_with_include($file){
   // do domething
   include($file);
   echo "отсюда мы видим: $foo_var";
   // ВОТ ТУТ я перегоняю переменный в глобалс!
   foreach($_FUNC_VARS as $k => $v){
         $_GLOBALS[$k] = $_FUNC_VARS[$k];
   }
   // do something else
}

func_with_include('abc.php');
echo "отсюда тоже! $foo_var";



--------------------
PM   Вверх
Drache
Дата 18.8.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 31.3.2006

Репутация: 1
Всего: 3



все просто.
тебе сюда - get_defined_vars().
Если вызывается внутри ф-ции, то возвращает массив только из тех переменных, которые определены в этой ф-ции.
PM MAIL   Вверх
vasac
Дата 18.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Цитата(vasac @  17.8.2006,  14:00 Найти цитируемый пост)
нет такого.

Цитата(Drache @  18.8.2006,  10:13 Найти цитируемый пост)
тебе сюда - get_defined_vars().

Да, облажался, действительно есть...

Лично я всегда в библиотеках определяю глобальные переменные через $GLOBALS, чего и всем советую.
PM WWW   Вверх
szz
Дата 20.8.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата

Лично я всегда в библиотеках определяю глобальные переменные через $GLOBALS, чего и всем советую. 


  все верно, я тоже код систематизировано и огласованно с самим собой пишу. Но когда, например, нужно так заинклудить код кого-нибудь другого автора, причем огроменный - не буду ж я там у него все глобальные переменные выискивать smile


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1007 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.