web-dev-qa-db-fra.com

Array global à PHP

je dois fonctionner dans deux fichiers différents. L'un d'entre eux devrait ajouter un nouvel élément à un tableau à chaque appelé et le tableau doit être accessible .Qu'est-ce que j'ai fait pour cela est:

function1(){

   global $array;

   $array[] = 'hi';

}

mais cela crée simplement un élément dans la matrice, même si j'appelle cette fonction 4 fois.

9
hd.

Ce que tu as fait devrait travailler.

<?php

function function1(){

   global $array;

   $array[] = 'hi';

}
function1();
function1();
function1();
print_r($array);

Testez-le.

Vous avez probablement un autre problème. Veuillez noter que la durée de vie de toutes les variables est la course actuelle de votre script. Ils n'existeront pas dans une course successive. Pour cela, vous devez utiliser une sorte de persistance comme session, cookie, système de fichiers, base de données.

Pour plus d'aide, postez votre code complet.

11
Alin Purcaru

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 des fonctions "deux"?

Si vous avez deux fonctions essayant à la fois d'utiliser votre variable $ TRAY, vous devrez appeler global $array; dans les deux fonctions.

La raison en est que global est un peu trompeur. Tout ce que c'est vraiment en train d'affecter 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 ça:

 global $variable;

c'est essentiellement la même chose que de dire ceci:

 $variable =& $_GLOBALS['variable'];   (assign by reference)

La variable effective $variable est toujours scopé au niveau de la fonction, il arrive simplement de faire 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 nouvelle variable dans le cadre de cette fonction. Lorsque la fonction se termine, la variable est déséquilibrée et toute modification apportée dans la fonction est perdue.

Avec tout cela, les variables globales ont toujours tendance à être une mauvaise idée. C'est beaucoup plus clair que si vous gardez simplement une variable locale et que vous le transmettez comme paramètre à d'autres fonctions en cas de besoin.

5
AgentConundrum