функция не видит переменную :/ (global)

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

gruz1

Новичок
функция не видит переменную :/ (global)

Добрый день всем! Встал вопрос переноса функций из одного файла в другой, не знаю почему, но появились проблемы с видимостью переменных...
например, в коде:
PHP:
$perem1 = "value1";
function1();
var_dump($perem1);
// skipped
function function1() {
global $perem1;
var_dump($perem1);
}
Результат получаю только от var_dump, идущего после вызова function1():
PHP:
string(6) "value1"
В function1() $perem1 идет как NULL. Почему такое может быть?
:confused:
 

Андрейка

Senior pomidor developer
gruz1
друг мой, давай сразу определимся - это точно тот самый код, который не работает? или он такой же, но чуть другой, на самую малость?
 

gruz1

Новичок
Естественно, я заменил свои названия переменных на другие, но суть та же. Этот код то же не работает.
Выдает:
PHP:
NULL string(6) "value1"
 

StUV

Rotaredom
gruz1
твой код "as-is" дает у меня:
$ ~/1.php
string(6) "value1"
string(6) "value1"

так что - проверь его в таком же виде еще раз...
 

Андрейка

Senior pomidor developer
я заменил свои названия переменных на другие
зачем? у тебя в названии переменной хранится пароль, да?
 

gruz1

Новичок
Андрейка, не цепляйся.
StUV, спасибо.

Если поможет в решении проблемы, вот основной кусок кода:
PHP:
$valid_extensions = array("gif", "jpg", "png", "jpeg");
var_dump($valid_extensions);
upload_form();
var_dump($valid_extensions);

function upload_form() {
	global $valid_extensions;
	var_dump($valid_extensions);
}
Получаю:
array(4) { [0]=> string(3) "gif" [1]=> string(3) "jpg" [2]=> string(3) "png" [3]=> string(4) "jpeg" }
NULL (из upload_form())
array(4) { [0]=> string(3) "gif" [1]=> string(3) "jpg" [2]=> string(3) "png" [3]=> string(4) "jpeg" }
 

x86

Новичок
забавно =) у меня в upload_form() вводит

array(4) { [0]=> string(3) "gif" [1]=> string(3) "jpg" [2]=> string(3) "png" [3]=> string(4) "jpeg" }

почему не использоваться

$GLOBALS['valid_extensions'] ?
 

Андрейка

Senior pomidor developer
gruz1
еще раз - это полный и точный код исполняемого скрипта или он просто похож на него?
 

gruz1

Новичок
удивительно :-/

когда предварительно объявил $valid_extensions как global $valid_extensions, то все заработало :-/

Утром не объявлял ничего и тот же кусок кода работал...

-~{}~ 23.01.07 11:25:

Андрейка, это полный и точный код исполняемого скрипта
 

denver

?>Скриптер
gruz1
Невероятно! И тот код с которым ты начал топик у тебя тоже уже работает? Невероятно!
 

gruz1

Новичок
Необходимо ли перед вызовом функции, в которой предполагается использовать внешнюю переменную, предварительно объявлять ее как global?
 

Андрейка

Senior pomidor developer
gruz1
тада объясни что значит "предварительно объявил $valid_extensions как global" и причем тут утро и как этот же кусок работал утром если ты его менял?
 

Фанат

oncle terrible
Команда форума
Необходимо ли перед вызовом функции, в которой предполагается использовать внешнюю переменную, предварительно объявлять ее как global?
необходимо на вопросы отвечать ЧЕСТНО.
 

gruz1

Новичок
Автор оригинала: denver
gruz1
Невероятно! И тот код с которым ты начал топик у тебя тоже уже работает? Невероятно!
если не объявить $perem до вызова function1() как global, то не работает

-~{}~ 23.01.07 11:29:

Автор оригинала: Фанат
gruz1
сдаётся мне, что насчёт полноты ты приврал.
Первый код и http://phpclub.ru/talk/showthread.php?postid=687440#post687440 семантически верны.
 

Фанат

oncle terrible
Команда форума
выполни.
свой
код.
так.
чтобы.
он.
являлся.
"полным и точным кодом исполняемого скрипта".

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

gruz1

Новичок
Автор оригинала: Фанат
необходимо на вопросы отвечать ЧЕСТНО.
Я считаю, что полностью честен с участниками. Если я и не показал основной код, то только потому, что не счел нужным. Предложенный вариант практически идентичен ему по смысловой нагрузке
 

Фанат

oncle terrible
Команда форума
семантически верны.
ять.
ну что ж за люди-то такие.

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

-~{}~ 23.01.07 11:34:

Если я и не показал основной код, то только потому, что не счел нужным.
считай дальше, болезный.
я вижу, ты тут умнее всех, и сам лучше знаешь, какой код нужный, а какой - нет.
но при этом продолжая ВРАТЬ, что код - ПОЛНЫЙ.

вот и отвечай на свои вопросы себе сам.
и ври тоже - сам себе.
чао

-~{}~ 23.01.07 11:39:

за враньё топики надо закрывать сразу. ОДИН раз предупредили, не захотел? свободен.
а не как сейчас - 5 человек его, как девку, уговаривают выполнить код, который сам же написал.
 

gruz1

Новичок
Приношу свои извинения за некорректность

Да бы не было сомнений в чистоте, предлагаю полный код:
PHP:
$valid_extensions	= array("gif", "jpg", "png", "jpeg");
var_dump($valid_extensions);
upload_form();
var_dump($valid_extensions);
function upload_form() {
	global $valid_extensions;
	var_dump($valid_extensions); // выдает NULL
}
если перед
PHP:
$valid_extensions	= array("gif", "jpg", "png", "jpeg");
пишу:
PHP:
global $valid_extensions;
то все работает :-/
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху