Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2018, 23:47   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Не меняется значение глобальной переменной

Здравствуйте.
Код примерно следующий:
Код:
$my_global_var=' lol '; // прописал в индексном файле сайта, т. е. в самом начале

{ ... чёрный ящик ... }

if ($my_condition)
{
	global $my_global_var;
	$my_global_var=' ololo '; // место, в котором возникают необходимые условия для изменения
} else;

{ ... ещё один чёрный ящик ... }

global $my_global_var;
echo $my_global_var; // место, где мне нужно вывести значение
В месте вывода, значение равно изначальному, несмотря на то, что были выполнены условия изменения, и переменная изменилась, во всяком случае так показывает вывод в месте изменения.
Через массив $GLOBALS эффект идентичный.
Времени на отладку двух чёрных ящиков разумеется нет.

Как быть подскажите ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 10.01.2019, 16:43   #2
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
Смех изврат, но должно сработать

Костыль, можно использовать функцию, которая возвращает значение. Типа такого:
Код:
function retVal($s) { // в индексном файле сайта, т. е. в самом начале
	return $s;
}

$my_global_var = retVal('Винни-Пух'); // тоже в индексном файле сайта

{ ... чёрный ящик ... }

if ($my_condition) {
	$my_global_var = retVal('Пятачок');
} else;

{ ... ещё один чёрный ящик ... }

echo $my_global_var; // должен быть Пятачок

Последний раз редактировалось SQLPowerUser; 10.01.2019 в 16:46.
SQLPowerUser вне форума Ответить с цитированием
Старый 11.01.2019, 09:11   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

если черные ящики - не функции, не инклуды других файлов а линейный код .... то просто используйте переменную без globa и будет вам счастье, иначе реально более точно покажите структуру
ADSoft вне форума Ответить с цитированием
Старый 24.01.2019, 01:33   #4
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Чудес не бывает, переменная должна измениться безо всяких костылей. Конечно, возможны и замыкания на PHP, но это явно не ваш случай.

Скорее всего вы где-то ещё раз инклудите index.php и переинициируете вашу $my_global_var. Вставляйте echo $my_global_var в ваш { ... ещё один чёрный ящик ... } и смотрите где это происходит. А то потом ещё вылезут какие-нибудь глюки.

Возможно, функция debug_backtrace() поможет. Или у вас xdebug на сервере установлен.
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 24.01.2019 в 01:39.
Ottava вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с глобальной переменной Hrniger Microsoft Office Excel 6 08.10.2017 15:30
Проблема с глобальной переменной HollyPaladin Общие вопросы C/C++ 4 08.10.2010 12:06
Многопоточность с глобальной переменной Шульц Общие вопросы Delphi 1 30.01.2010 18:19
Объявление глобальной переменной Grom48 Общие вопросы Delphi 3 19.12.2009 22:16
Проблема глобальной переменной Хохматый Microsoft Office Access 1 18.06.2009 13:04