Область видимости переменных?

Аватар пользователя elia elia 19 августа 2013 в 11:25

Среда: D5 на PHP 5.0

Есть свой скрипт(ы), который include в ноду.
Постоянная война с областью видимости переменных - где-то что-то видится, а где-то что-то не видится.

Сейчас есть задачка:
В скрипте, который вызывается из скрипта, который include в ноде, инициализируется переменная с массивом данных, а функция ниже в скрипте при вызове возвращает случайную запись из массива. При этом в том же массиве есть субмассив с ключами использованных записей, что бы не выводить повторы. global в первой же строчке функции не помогал - массив данных не доступен и все тут. Переносишь его во внутрь функции - все работает, выносишь - не работает.

Нашел решение в интернет под D6 - в месте первой инициализации переменной надо сначала объявить ее глобальной, затем проинициализировать в обычный способ и потом в местах вызова обращаться к ней через $GLOBAL. И о чудо - все заработало! Но... Но при каждой записи использованного ключа в субмассив, тот обнуляется! Попробовал при инициализации переменной сразу прописать в субмассив ключи с 0-ной отметкой ([1] => 0, [2] => 0 и т.д.) и выводить их через var_dump в функции только при входе в функцию и после каждого апдейта ключей в субмассиве: сначала субмассив полный и валидный, но после каждого апдейта в нем остается только проапдейтенный ключ... Т.е. все работает только на чтение?

Может есть где-то связанный материал (желательно на русском или подлежащий автоматическому переводу) про облась видимости переменных в Drupal (5)? А то уже обилие костылей в коде приводит в ужас...

Комментарии

Аватар пользователя elia elia 21 августа 2013 в 10:27

Вопрос с записью в эту переменную таки снят - костыли кривоваты были Smile
Но глобальный вопрос по ограничениям области видимости переменных остался.