Estoy un poco confundido por la redacción de su pregunta. Cuando dice "tengo que funcionar en dos archivos diferentes". ¿quieres decir que tienes "dos" funciones?
Si tiene dos funciones para tratar de usar su variable de $ array, deberá llamar al global $array;
en ambas funciones.
La razón para esto es que global
es un poco engañoso. Lo único que está haciendo realmente es asignar una referencia a un miembro de $_GLOBALS
a una variable en el ámbito local que tiene el mismo nombre que el índice $ _GLOBALS. En otras palabras, si haces algo como esto:
global $variable;
que es esencialmente el mismo que decir esto:
$variable =& $_GLOBALS['variable']; (assign by reference)
La variable real $variable
todavía está en el ámbito en el nivel de función, que sólo pasa a tener una referencia a una variable global.
La implicación de esto es que si no define global $variable
en cada función, solo está creando una nueva variable dentro del alcance de esa función. Cuando la función finaliza, la variable no está configurada y se pierden los cambios que se le hacen dentro de la función.
Con todo lo dicho, las variables globales todavía tienden a ser una mala idea. Es mucho más claro si solo mantienes una variable local y la pasas como un parámetro a otras funciones cuando sea necesario.
Tenga en cuenta que [los globales son casi siempre malos] (http://c2.com/cgi/wiki?GlobalVariablesAreBad). – outis