2つの異なるファイルで機能する必要があります。それらの1つは、呼び出されるたびに新しい項目を配列に追加する必要があり、配列はアクセス可能である必要があります。
function1(){
global $array;
$array[] = 'hi';
}
しかし、この関数を4回呼び出しても、配列に1つの項目が作成されるだけです。
あなたがしたことはうまくいくはずです。
<?php
function function1(){
global $array;
$array[] = 'hi';
}
function1();
function1();
function1();
print_r($array);
おそらく別の問題があります。すべての変数の有効期間は、スクリプトの現在の実行であることに注意してください。それらはその後の実行では存在しません。そのためには、セッション、Cookie、ファイルシステム、データベースなどの永続性を使用する必要があります。
詳細については、完全なコードを投稿してください。
私はあなたの質問の文言に少し混乱しています。 「2つの異なるファイルで機能する必要がある」と言うとき。 「2つの」機能があるということですか?
$ array変数を使用しようとする2つの関数がある場合、両方の関数でglobal $array;
を呼び出す必要があります。
これは、global
が少し誤解を招くためです。実際に行っているのは、$_GLOBALS
のメンバーへの参照を、$ _ GLOBALSインデックスと同じ名前を持つローカルスコープの変数に割り当てることだけです。つまり、次のようなことをすると:
global $variable;
これは基本的にこれと同じことです。
$variable =& $_GLOBALS['variable']; (assign by reference)
実際の変数$variable
はまだ関数レベルでスコープされており、たまたまグローバル変数への参照があります。
これは、すべての関数でglobal $variable
を定義しない場合、その関数のスコープ内でまったく新しい変数を作成していることを意味します。関数が終了すると、変数は設定解除され、関数内で行われた変更はすべて失われます。
以上のことすべてを踏まえても、グローバル変数は依然として悪い考えである傾向があります。ローカル変数を維持し、必要に応じてパラメーターとして他の関数に渡すと、より明確になります。