PHP 関数内でグローバル変数にアクセスする
さまざまなプログラミング言語では、関数の外で宣言された変数を関数内で利用できます。ただし、予想に反して、次の PHP コードは空の配列出力を生成します。
<code class="php">$data = 'My data'; function menugen() { echo "[" . $data . "]"; } menugen();</code>
この動作を理解するために、PHP 変数のスコープ ルールを詳しく調べます。デフォルトでは、関数は直接のスコープ内で定義された変数にのみアクセスできます。外部変数にアクセスするには、関数内で global キーワードを使用する必要があります。
<code class="php">$data = 'My data'; function menugen() { global $data; // Add this line echo "[" . $data . "]"; } menugen();</code>
この行を組み込むことにより、$data 変数が menugen 関数内でグローバルとして宣言され、使用できるようになります。あるいは、関数のスコープ外の変数には、$GLOBALS 配列を使用してアクセスできます。
<code class="php">echo $GLOBALS['data'];</code>
グローバルを使用すると便利ですが、複雑さとコードの脆弱性が生じる可能性があることに注意することが重要です。より堅牢なアプローチは、データをパラメーターとして関数に渡し、コードの保守性を高め、グローバル変数への依存を減らすことです。これは次のようにして実現できます:
<code class="php">$data = 'My data'; function menugen($data) { // Declare parameter echo "[" . $data . "]"; } menugen($data); // Pass data at function call</code>
以上がPHP 関数内でグローバル変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。