Я немного смущен формулировкой вашего вопроса. Когда вы говорите: «Мне нужно работать в двух разных файлах». вы имеете в виду, что у вас есть «две» функции?
Если у вас есть две функции, которые пытаются использовать переменную $ array, вам нужно вызвать global $array;
в обе функции.
Причина в том, что global
немного вводит в заблуждение. Все, что он делает, это присвоение ссылки на члену $_GLOBALS
переменной в локальной области, которая имеет то же имя, что и индекс $ _GLOBALS. Другими словами, если вы делаете что-то вроде этого:
global $variable;
это по сути то же самое, говоря это:
$variable =& $_GLOBALS['variable']; (assign by reference)
Фактическая переменная $variable
еще областью действия на уровне функции, это просто происходит имеют ссылку на глобальную переменную.
Подразумевается, что если вы не определяете global $variable
в каждой функции, вы просто создаете совершенно новую переменную в рамках этой функции. Когда функция заканчивается, переменная не работает, и любые изменения, внесенные в нее в функции, теряются.
Учитывая, что глобальные переменные по-прежнему имеют тенденцию быть плохой идеей. Это намного яснее, если вы просто поддерживаете локальную переменную и передаете ее как параметр другим функциям, когда это необходимо.
Обратите внимание, что [globals почти всегда плохие] (http://c2.com/cgi/wiki?GlobalVariablesAreBad). – outis