Je suis un peu confus par le libellé de votre question. Quand vous dites "je dois fonctionner dans deux fichiers différents". voulez-vous dire que vous avez "deux" fonctions?
Si vous avez deux fonctions essayant toutes deux d'utiliser votre variable $ array, vous devrez appeler global $array;
dans les deux fonctions. La raison de ceci est que global
est un peu trompeur. Tout ce qu'il fait vraiment est d'assigner une référence à un membre de $_GLOBALS
à une variable dans la portée locale qui a le même nom que l'index $ _GLOBALS. En d'autres termes, si vous faites quelque chose comme ceci:
global $variable;
c'est essentiellement la même chose que de dire ceci:
$variable =& $_GLOBALS['variable']; (assign by reference)
La variable réelle $variable
est encore SCOPED au niveau de la fonction, il arrive juste avoir une référence à une variable globale.
L'implication de ceci est que si vous ne définissez pas global $variable
dans chaque fonction, vous créez simplement une toute nouvelle variable dans le cadre de cette fonction. Lorsque la fonction se termine, la variable est désactivée et toutes les modifications apportées à la fonction sont perdues.
Avec tout cela, les variables globales ont toujours tendance à être une mauvaise idée. C'est beaucoup plus clair si vous maintenez simplement une variable locale, et passez-la comme paramètre à d'autres fonctions si nécessaire.
Notez que [globals sont presque toujours mauvais] (http://c2.com/cgi/wiki?GlobalVariablesAreBad). – outis